X-Git-Url: https://git.sesse.net/?a=blobdiff_plain;f=libbcachefs%2Fnocow_locking.h;h=f9d6a426a960c4949902c72f2019bd76bd308676;hb=06611a71a35a1b14efe192454aabf3a01b4804d4;hp=45258cc34614af8c86e047d3f910489c2484d9fa;hpb=42cf74fd1d0ef58927967e6236988e86cfc0d086;p=bcachefs-tools-debian diff --git a/libbcachefs/nocow_locking.h b/libbcachefs/nocow_locking.h index 45258cc..f9d6a42 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,8 +33,18 @@ 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 *); +void bch2_fs_nocow_locking_exit(struct bch_fs *); int bch2_fs_nocow_locking_init(struct bch_fs *); #endif /* _BCACHEFS_NOCOW_LOCKING_H */