]> git.sesse.net Git - bcachefs-tools-debian/blobdiff - libbcachefs/nocow_locking.h
Move c_src dirs back to toplevel
[bcachefs-tools-debian] / libbcachefs / nocow_locking.h
index 45258cc34614af8c86e047d3f910489c2484d9fa..f9d6a426a960c4949902c72f2019bd76bd308676 100644 (file)
@@ -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 */