]> www.infradead.org Git - users/jedix/linux-maple.git/commitdiff
bcachefs: Fix 'hung task' messages in btree node scan
authorKent Overstreet <kent.overstreet@linux.dev>
Wed, 26 Mar 2025 15:26:30 +0000 (11:26 -0400)
committerKent Overstreet <kent.overstreet@linux.dev>
Wed, 26 Mar 2025 20:26:35 +0000 (16:26 -0400)
btree node scan has to wait on kthread workers that scan each device,
potentially for awhile.

We would like this to be interruptible, but we may need a different
mechanism than signals for that - we've had bugs in the past where
mounts were failing due to checking for signals, and no explanation on
where they came from.

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

index 678161321e426479334512adbfb10d96f2f64658..de02c0e378c9c6bdfc7ec10a1c8b0db71fc08c28 100644 (file)
@@ -13,6 +13,7 @@
 
 #include <linux/kthread.h>
 #include <linux/min_heap.h>
+#include <linux/sched/sysctl.h>
 #include <linux/sort.h>
 
 struct find_btree_nodes_worker {
@@ -313,7 +314,8 @@ static int read_btree_nodes(struct find_btree_nodes *f)
                wake_up_process(t);
        }
 err:
-       closure_sync(&cl);
+       while (closure_sync_timeout(&cl, sysctl_hung_task_timeout_secs * HZ / 2))
+               ;
        return f->ret ?: ret;
 }