summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--fs/bcachefs/buckets.c8
1 files changed, 6 insertions, 2 deletions
diff --git a/fs/bcachefs/buckets.c b/fs/bcachefs/buckets.c
index f0a63232093a..555fd969d1de 100644
--- a/fs/bcachefs/buckets.c
+++ b/fs/bcachefs/buckets.c
@@ -348,8 +348,10 @@ bool bch2_invalidate_bucket(struct bch_fs *c, struct bch_dev *ca,
lg_local_lock(&c->usage_lock);
*old = bucket_data_cmpxchg(c, ca, g, new, ({
- if (!is_available_bucket(new))
+ if (!is_available_bucket(new)) {
+ lg_local_unlock(&c->usage_lock);
return false;
+ }
new.owned_by_allocator = 1;
new.touched_this_mount = 1;
@@ -374,8 +376,10 @@ bool bch2_mark_alloc_bucket_startup(struct bch_fs *c, struct bch_dev *ca,
lg_local_lock(&c->usage_lock);
old = bucket_data_cmpxchg(c, ca, g, new, ({
if (new.touched_this_mount ||
- !is_available_bucket(new))
+ !is_available_bucket(new)) {
+ lg_local_unlock(&c->usage_lock);
return false;
+ }
new.owned_by_allocator = 1;
new.touched_this_mount = 1;