summaryrefslogtreecommitdiffstats
path: root/fs/bcachefs/io_write.c
diff options
context:
space:
mode:
authorKent Overstreet <kent.overstreet@linux.dev>2024-05-03 14:49:23 -0400
committerKent Overstreet <kent.overstreet@linux.dev>2024-05-08 17:29:22 -0400
commite98786ea855cb28176e27ffce23fb163a36ed32e (patch)
treedb7adc56c0a1b5eb177b04041b0f8386b767e2f3 /fs/bcachefs/io_write.c
parent4c5b7294dedbdfae46f77262c0744879bb9b7221 (diff)
downloadlinux-e98786ea855cb28176e27ffce23fb163a36ed32e.tar.gz
linux-e98786ea855cb28176e27ffce23fb163a36ed32e.tar.bz2
linux-e98786ea855cb28176e27ffce23fb163a36ed32e.zip
bcachefs: bch2_print_allocator_stuck()
If we block on the allocator for more than 10 seconds, print out some useful debugging info. Signed-off-by: Kent Overstreet <kent.overstreet@linux.dev>
Diffstat (limited to 'fs/bcachefs/io_write.c')
-rw-r--r--fs/bcachefs/io_write.c6
1 files changed, 5 insertions, 1 deletions
diff --git a/fs/bcachefs/io_write.c b/fs/bcachefs/io_write.c
index e96dad0dd60d..55e24c83fb19 100644
--- a/fs/bcachefs/io_write.c
+++ b/fs/bcachefs/io_write.c
@@ -1494,7 +1494,11 @@ err:
if ((op->flags & BCH_WRITE_SYNC) ||
(!(op->flags & BCH_WRITE_DONE) &&
!(op->flags & BCH_WRITE_IN_WORKER))) {
- closure_sync(&op->cl);
+ if (closure_sync_timeout(&op->cl, HZ * 10)) {
+ bch2_print_allocator_stuck(c);
+ closure_sync(&op->cl);
+ }
+
__bch2_write_index(op);
if (!(op->flags & BCH_WRITE_DONE))