From: Kent Overstreet Date: Thu, 10 Mar 2022 22:35:06 +0000 (-0500) Subject: bcachefs: Add a missing wakeup X-Git-Url: http://git.maquefel.me/?a=commitdiff_plain;h=cc23255e9a9fcaf7423e0fe7e197605bf10a3f06;p=linux.git bcachefs: Add a missing wakeup This fixes a rare bug with bch2_btree_flush_all_writes() getting stuck. Signed-off-by: Kent Overstreet --- diff --git a/fs/bcachefs/btree_io.c b/fs/bcachefs/btree_io.c index 3031b566a112b..887a1b145cdc8 100644 --- a/fs/bcachefs/btree_io.c +++ b/fs/bcachefs/btree_io.c @@ -1622,6 +1622,8 @@ static void __btree_node_write_done(struct bch_fs *c, struct btree *b) if (new & (1U << BTREE_NODE_write_in_flight)) __bch2_btree_node_write(c, b, BTREE_WRITE_ALREADY_STARTED); + else + wake_up_bit(&b->flags, BTREE_NODE_write_in_flight); } static void btree_node_write_done(struct bch_fs *c, struct btree *b) @@ -2091,7 +2093,6 @@ restart: rcu_read_unlock(); wait_on_bit_io(&b->flags, flag, TASK_UNINTERRUPTIBLE); goto restart; - } rcu_read_unlock(); }