]> www.infradead.org Git - nvme.git/commitdiff
bcachefs: use nonblocking variant of print_string_as_lines in error path
authorBharadwaj Raju <bharadwaj.raju777@gmail.com>
Wed, 2 Apr 2025 18:15:53 +0000 (23:45 +0530)
committerKent Overstreet <kent.overstreet@linux.dev>
Thu, 3 Apr 2025 16:11:42 +0000 (12:11 -0400)
The inconsistency error path calls print_string_as_lines, which calls
console_lock, which is a potentially-sleeping function and so can't be
called in an atomic context.

Replace calls to it with the nonblocking variant which is safe to call.

Signed-off-by: Bharadwaj Raju <bharadwaj.raju777@gmail.com>
Signed-off-by: Kent Overstreet <kent.overstreet@linux.dev>
fs/bcachefs/error.c

index b885bd92834c726bd9e18afd6272ca61fdb27405..baf5dfb32298437363fe0a666cdf3654665b6d47 100644 (file)
@@ -34,7 +34,7 @@ bool __bch2_inconsistent_error(struct bch_fs *c, struct printbuf *out)
                                   journal_cur_seq(&c->journal));
                return true;
        case BCH_ON_ERROR_panic:
-               bch2_print_string_as_lines(KERN_ERR, out->buf);
+               bch2_print_string_as_lines_nonblocking(KERN_ERR, out->buf);
                panic(bch2_fmt(c, "panic after error"));
                return true;
        default:
@@ -71,7 +71,7 @@ static bool bch2_fs_trans_inconsistent(struct bch_fs *c, struct btree_trans *tra
        if (trans)
                bch2_trans_updates_to_text(&buf, trans);
        bool ret = __bch2_inconsistent_error(c, &buf);
-       bch2_print_string_as_lines(KERN_ERR, buf.buf);
+       bch2_print_string_as_lines_nonblocking(KERN_ERR, buf.buf);
 
        printbuf_exit(&buf);
        return ret;