Commit b1d63b06 authored by Kent Overstreet's avatar Kent Overstreet
Browse files

bcachefs: Make read_only a mount option again, but hidden



fsck passes read_only as a mount option, and it's required for
nochanges, which it also uses.

Usually read_only is handled by the VFS, but we need to be able to
handle it too; we just don't want to print it out twice, so mark it as a
hidden option.

Signed-off-by: default avatarKent Overstreet <kent.overstreet@linux.dev>
parent 9d9d212e
Loading
Loading
Loading
Loading
+0 −13
Original line number Diff line number Diff line
@@ -214,19 +214,6 @@ static long bch2_ioctl_fsck_offline(struct bch_ioctl_fsck_offline __user *user_a

	if (arg.opts) {
		char *optstr = strndup_user((char __user *)(unsigned long) arg.opts, 1 << 16);
		char *ro, *rest;

		/*
		 * If passed a "read_only" mount option, remove it because it is
		 * no longer a valid mount option, and the filesystem will be
		 * set "read_only" regardless.
		 */
		ro = strstr(optstr, "read_only");
		if (ro) {
			rest = ro + strlen("read_only");
			memmove(ro, rest, strlen(rest) + 1);
		}

		ret =   PTR_ERR_OR_ZERO(optstr) ?:
			bch2_parse_mount_opts(NULL, &thr->opts, NULL, optstr);
		if (!IS_ERR(optstr))
+2 −1
Original line number Diff line number Diff line
@@ -1800,7 +1800,8 @@ static int bch2_show_options(struct seq_file *seq, struct dentry *root)
		const struct bch_option *opt = &bch2_opt_table[i];
		u64 v = bch2_opt_get_by_id(&c->opts, i);

		if (!(opt->flags & OPT_MOUNT))
		if ((opt->flags & OPT_HIDDEN) ||
		    !(opt->flags & OPT_MOUNT))
			continue;

		if (v == bch2_opt_get_by_id(&bch2_opts_default, i))
+2 −1
Original line number Diff line number Diff line
@@ -63,6 +63,7 @@ enum opt_flags {
	OPT_MUST_BE_POW_2 = (1 << 7),	/* Must be power of 2 */
	OPT_SB_FIELD_SECTORS = (1 << 8),/* Superblock field is >> 9 of actual value */
	OPT_SB_FIELD_ILOG2 = (1 << 9),	/* Superblock field is ilog2 of actual value */
	OPT_HIDDEN	= (1 << 10),
};

enum opt_type {
@@ -406,7 +407,7 @@ enum fsck_err_opts {
	  BCH2_NO_SB_OPT,		BCH_SB_SECTOR,			\
	  "offset",	"Sector offset of superblock")			\
	x(read_only,			u8,				\
	  OPT_FS,							\
	  OPT_FS|OPT_MOUNT|OPT_HIDDEN,					\
	  OPT_BOOL(),							\
	  BCH2_NO_SB_OPT,		false,				\
	  NULL,		NULL)						\