]> git.dujemihanovic.xyz Git - linux.git/commitdiff
bcachefs: Disable errors=panic for BCH_IOCTL_FSCK_OFFLINE
authorKent Overstreet <kent.overstreet@linux.dev>
Sat, 6 Apr 2024 02:30:30 +0000 (22:30 -0400)
committerKent Overstreet <kent.overstreet@linux.dev>
Sat, 6 Apr 2024 17:50:25 +0000 (13:50 -0400)
BCH_IOCTL_FSCK_OFFLINE allows the userspace fsck tool to use the kernel
implementation of fsck - primarily when the kernel version is a better
version match.

It should look and act exactly like the normal userspace fsck that the
user expected to be invoking, so errors should never result in a kernel
panic.

We may want to consider further restricting errors=panic - it's only
intended for debugging in controlled test environments, it should have
no purpose it normal usage.

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

index 1e033df330b0da9f0d3e8cbe2f8f2b1985e6ec8e..72781aad6ba70ccc774b688c6a9d50b2dc21f133 100644 (file)
@@ -234,6 +234,10 @@ static long bch2_ioctl_fsck_offline(struct bch_ioctl_fsck_offline __user *user_a
 
        thr->c = bch2_fs_open(devs.data, arg.nr_devs, thr->opts);
 
+       if (!IS_ERR(thr->c) &&
+           thr->c->opts.errors == BCH_ON_ERROR_panic)
+               thr->c->opts.errors = BCH_ON_ERROR_ro;
+
        ret = bch2_run_thread_with_stdio(&thr->thr, &bch2_offline_fsck_ops);
 out:
        darray_for_each(devs, i)