summaryrefslogtreecommitdiff
path: root/libbcachefs/buckets.h
diff options
context:
space:
mode:
authorKent Overstreet <kent.overstreet@linux.dev>2023-10-07 17:23:13 -0400
committerHunter Shaffer <huntershaffer182456@gmail.com>2023-10-08 21:06:07 -0400
commit1251ea58a84e365db3754e6f5f57bd442484dc89 (patch)
tree2f568a8130f83f7a9d05fa70a2466f89ac772a3d /libbcachefs/buckets.h
parent6b175a022496572416918bd38d083120c23ba5f2 (diff)
Update bcachefs sources to 7bf1ac0d46 bcachefs: Correctly initialize new buckets on device resize
Signed-off-by: Hunter Shaffer <huntershaffer182456@gmail.com>
Diffstat (limited to 'libbcachefs/buckets.h')
-rw-r--r--libbcachefs/buckets.h7
1 files changed, 5 insertions, 2 deletions
diff --git a/libbcachefs/buckets.h b/libbcachefs/buckets.h
index ecbeb728..bf8d7f40 100644
--- a/libbcachefs/buckets.h
+++ b/libbcachefs/buckets.h
@@ -70,12 +70,15 @@ union ulong_byte_assert {
static inline void bucket_unlock(struct bucket *b)
{
BUILD_BUG_ON(!((union ulong_byte_assert) { .ulong = 1UL << BUCKET_LOCK_BITNR }).byte);
- bit_spin_unlock(BUCKET_LOCK_BITNR, (void *) &b->lock);
+
+ clear_bit_unlock(BUCKET_LOCK_BITNR, (void *) &b->lock);
+ wake_up_bit((void *) &b->lock, BUCKET_LOCK_BITNR);
}
static inline void bucket_lock(struct bucket *b)
{
- bit_spin_lock(BUCKET_LOCK_BITNR, (void *) &b->lock);
+ wait_on_bit_lock((void *) &b->lock, BUCKET_LOCK_BITNR,
+ TASK_UNINTERRUPTIBLE);
}
static inline struct bucket_array *gc_bucket_array(struct bch_dev *ca)