bcachefs: Fix locking in bch2_alloc_write_key()
authorKent Overstreet <kent.overstreet@linux.dev>
Sun, 17 Mar 2024 02:45:46 +0000 (22:45 -0400)
committerKent Overstreet <kent.overstreet@linux.dev>
Mon, 18 Mar 2024 00:53:11 +0000 (20:53 -0400)
Signed-off-by: Kent Overstreet <kent.overstreet@linux.dev>
fs/bcachefs/btree_gc.c

index 584aee7010deaa79df36edd60e5d7e59bcb7a7e3..bdaed29f084a4d558a160817e6fa6447c8547b0d 100644 (file)
@@ -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 &&