diff options
author | Kent Overstreet <kent.overstreet@linux.dev> | 2023-02-09 18:34:08 -0500 |
---|---|---|
committer | Kent Overstreet <kent.overstreet@linux.dev> | 2023-02-09 18:36:24 -0500 |
commit | a104f0407b7f5de54972389ef10e11dd8c525a96 (patch) | |
tree | 07c993aeedb4bfe4a52d6725a689a6b018d2b483 /libbcachefs/nocow_locking.h | |
parent | abe1c3bc8e116879a258bff2316cfb0586f15fec (diff) |
Update bcachefs sources to ea93c26e98 fixup! bcachefs: We can handle missing btree roots for all alloc btrees
Signed-off-by: Kent Overstreet <kent.overstreet@linux.dev>
Diffstat (limited to 'libbcachefs/nocow_locking.h')
-rw-r--r-- | libbcachefs/nocow_locking.h | 10 |
1 files changed, 10 insertions, 0 deletions
diff --git a/libbcachefs/nocow_locking.h b/libbcachefs/nocow_locking.h index 45258cc3..ff8e4af5 100644 --- a/libbcachefs/nocow_locking.h +++ b/libbcachefs/nocow_locking.h @@ -20,6 +20,7 @@ static inline struct nocow_lock_bucket *bucket_nocow_lock(struct bucket_nocow_lo bool bch2_bucket_nocow_is_locked(struct bucket_nocow_lock_table *, struct bpos); void bch2_bucket_nocow_unlock(struct bucket_nocow_lock_table *, struct bpos, int); +bool __bch2_bucket_nocow_trylock(struct nocow_lock_bucket *, u64, int); void __bch2_bucket_nocow_lock(struct bucket_nocow_lock_table *, struct nocow_lock_bucket *, u64, int); @@ -32,6 +33,15 @@ static inline void bch2_bucket_nocow_lock(struct bucket_nocow_lock_table *t, __bch2_bucket_nocow_lock(t, l, dev_bucket, flags); } +static inline bool bch2_bucket_nocow_trylock(struct bucket_nocow_lock_table *t, + struct bpos bucket, int flags) +{ + u64 dev_bucket = bucket_to_u64(bucket); + struct nocow_lock_bucket *l = bucket_nocow_lock(t, dev_bucket); + + return __bch2_bucket_nocow_trylock(l, dev_bucket, flags); +} + void bch2_nocow_locks_to_text(struct printbuf *, struct bucket_nocow_lock_table *); int bch2_fs_nocow_locking_init(struct bch_fs *); |