diff options
-rw-r--r-- | fs/bcachefs/buckets.c | 8 |
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; |