]> www.infradead.org Git - users/hch/xfs.git/commitdiff
bcachefs: Fix failure to flush moves before sleeping in copygc
authorKent Overstreet <kent.overstreet@linux.dev>
Fri, 23 Aug 2024 21:38:41 +0000 (17:38 -0400)
committerKent Overstreet <kent.overstreet@linux.dev>
Sat, 24 Aug 2024 14:16:21 +0000 (10:16 -0400)
This fixes an apparent deadlock - rebalance would get stuck trying to
take nocow locks because they weren't being released by copygc.

Signed-off-by: Kent Overstreet <kent.overstreet@linux.dev>
fs/bcachefs/movinggc.c

index deef4f024d20bdc8acba5f66ac01b7447b16259f..d86565bf07c8c563cb5651d2ea7e585a3f2ff7df 100644 (file)
@@ -383,7 +383,7 @@ static int bch2_copygc_thread(void *arg)
                        if (min_member_capacity == U64_MAX)
                                min_member_capacity = 128 * 2048;
 
-                       bch2_trans_unlock_long(ctxt.trans);
+                       move_buckets_wait(&ctxt, buckets, true);
                        bch2_kthread_io_clock_wait(clock, last + (min_member_capacity >> 6),
                                        MAX_SCHEDULE_TIMEOUT);
                }