From: Kent Overstreet <kent.overstreet@linux.dev>
Date: Sun, 17 Mar 2024 02:45:46 +0000 (-0400)
Subject: bcachefs: Fix locking in bch2_alloc_write_key()
X-Git-Url: http://git.maquefel.me/?a=commitdiff_plain;h=37bb9c9572858288457614366635e8c4c1eaf8ce;p=linux.git

bcachefs: Fix locking in bch2_alloc_write_key()

Signed-off-by: Kent Overstreet <kent.overstreet@linux.dev>
---

diff --git a/fs/bcachefs/btree_gc.c b/fs/bcachefs/btree_gc.c
index 584aee7010dea..bdaed29f084a4 100644
--- a/fs/bcachefs/btree_gc.c
+++ b/fs/bcachefs/btree_gc.c
@@ -1392,11 +1392,11 @@ static int bch2_alloc_write_key(struct btree_trans *trans,
 					 *old,
 					 b->data_type);
 	gc = *b;
-	percpu_up_read(&c->mark_lock);
 
 	if (gc.data_type != old_gc.data_type ||
 	    gc.dirty_sectors != old_gc.dirty_sectors)
 		bch2_dev_usage_update_m(c, ca, &old_gc, &gc);
+	percpu_up_read(&c->mark_lock);
 
 	if (metadata_only &&
 	    gc.data_type != BCH_DATA_sb &&