linux-ext4.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
From: Lukas Czerner <lczerner@redhat.com>
To: linux-ext4@vger.kernel.org
Cc: Theodore Ts'o <tytso@mit.edu>,
	David Howells <dhowells@redhat.com>,
	Al Viro <viro@zeniv.linux.org.uk>
Subject: [PATCH 02/17] ext4: Add fs parameter description
Date: Wed,  6 Nov 2019 11:14:42 +0100	[thread overview]
Message-ID: <20191106101457.11237-3-lczerner@redhat.com> (raw)
In-Reply-To: <20191106101457.11237-1-lczerner@redhat.com>

Signed-off-by: Lukas Czerner <lczerner@redhat.com>
---
 fs/ext4/super.c           | 109 ++++++++++++++++++++++++++++++++++++++
 include/linux/fs_parser.h |   6 +++
 2 files changed, 115 insertions(+)

diff --git a/fs/ext4/super.c b/fs/ext4/super.c
index dd654e53ba3d..44254179bd4f 100644
--- a/fs/ext4/super.c
+++ b/fs/ext4/super.c
@@ -47,6 +47,9 @@
 #include <linux/kthread.h>
 #include <linux/freezer.h>
 
+#include <linux/fs_context.h>
+#include <linux/fs_parser.h>
+
 #include "ext4.h"
 #include "ext4_extents.h"	/* Needed for trace points definition */
 #include "ext4_jbd2.h"
@@ -1459,6 +1462,112 @@ enum {
 	Opt_dioread_nolock, Opt_dioread_lock,
 	Opt_discard, Opt_nodiscard, Opt_init_itable, Opt_noinit_itable,
 	Opt_max_dir_size_kb, Opt_nojournal_checksum, Opt_nombcache,
+	Opt_errors, Opt_data, Opt_data_err, Opt_jqfmt,
+};
+
+static const struct fs_parameter_enum ext4_param_enums[] = {
+	{Opt_errors,	"continue",	Opt_err_cont},
+	{Opt_errors,	"panic",	Opt_err_panic},
+	{Opt_errors,	"remount-ro",	Opt_err_ro},
+	{Opt_data,	"journal",	Opt_data_journal},
+	{Opt_data,	"ordered",	Opt_data_ordered},
+	{Opt_data,	"writeback",	Opt_data_writeback},
+	{Opt_data_err,	"abort",	Opt_data_err_abort},
+	{Opt_data_err,	"ignore",	Opt_data_err_ignore},
+	{Opt_jqfmt,	"vfsold",	Opt_jqfmt_vfsold},
+	{Opt_jqfmt,	"vfsv0",	Opt_jqfmt_vfsv0},
+	{Opt_jqfmt,	"vfsv1",	Opt_jqfmt_vfsv1},
+};
+
+static const struct fs_parameter_spec ext4_param_specs[] = {
+	fsparam_flag	("bsddf",		Opt_bsd_df),
+	fsparam_flag	("minixdf",		Opt_minix_df),
+	fsparam_flag	("grpid",		Opt_grpid),
+	fsparam_flag	("bsdgroups",		Opt_grpid),
+	fsparam_flag	("nogrpid",		Opt_nogrpid),
+	fsparam_flag	("sysvgroups",		Opt_nogrpid),
+	fsparam_u32	("resgid",		Opt_resgid),
+	fsparam_u32	("resuid",		Opt_resuid),
+	fsparam_u32	("sb",			Opt_sb),
+	fsparam_enum	("errors",		Opt_errors),
+	fsparam_flag	("nouid32",		Opt_nouid32),
+	fsparam_flag	("debug",		Opt_debug),
+	fsparam_flag	("oldalloc",		Opt_removed),
+	fsparam_flag	("orlov",		Opt_removed),
+	fsparam_flag	("user_xattr",		Opt_user_xattr),
+	fsparam_flag	("nouser_xattr",	Opt_nouser_xattr),
+	fsparam_flag	("acl",			Opt_acl),
+	fsparam_flag	("noacl",		Opt_noacl),
+	fsparam_flag	("norecovery",		Opt_noload),
+	fsparam_flag	("noload",		Opt_noload),
+	fsparam_flag	("bh",			Opt_removed),
+	fsparam_flag	("nobh",		Opt_removed),
+	fsparam_u32	("commit",		Opt_commit),
+	fsparam_u32	("min_batch_time",	Opt_min_batch_time),
+	fsparam_u32	("max_batch_time",	Opt_max_batch_time),
+	fsparam_u32	("journal_dev",		Opt_journal_dev),
+	fsparam_bdev	("journal_path",	Opt_journal_path),
+	fsparam_flag	("journal_checksum",	Opt_journal_checksum),
+	fsparam_flag	("nojournal_checksum",	Opt_nojournal_checksum),
+	fsparam_flag	("journal_async_commit",Opt_journal_async_commit),
+	fsparam_flag	("abort",		Opt_abort),
+	fsparam_enum	("data",		Opt_data),
+	fsparam_enum	("data_err",		Opt_data_err),
+	fsparam_string_empty
+			("usrjquota",		Opt_usrjquota),
+	fsparam_string_empty
+			("grpjquota",		Opt_grpjquota),
+	fsparam_enum	("jqfmt",		Opt_jqfmt),
+	fsparam_flag	("grpquota",		Opt_grpquota),
+	fsparam_flag	("quota",		Opt_quota),
+	fsparam_flag	("noquota",		Opt_noquota),
+	fsparam_flag	("usrquota",		Opt_usrquota),
+	fsparam_flag	("prjquota",		Opt_prjquota),
+	fsparam_bool	("barrier",		Opt_barrier),
+	fsparam_flag	("nobarrier",		Opt_nobarrier),
+	fsparam_flag	("i_version",		Opt_i_version),
+	fsparam_flag	("dax",			Opt_dax),
+	fsparam_u32	("stripe",		Opt_stripe),
+	fsparam_flag	("delalloc",		Opt_delalloc),
+	fsparam_flag	("nodelalloc",		Opt_nodelalloc),
+	fsparam_flag	("warn_on_error",	Opt_warn_on_error),
+	fsparam_flag	("nowarn_on_error",	Opt_nowarn_on_error),
+	fsparam_flag	("lazytime",		Opt_lazytime),
+	fsparam_flag	("nolazytime",		Opt_nolazytime),
+	fsparam_u32	("debug_want_extra_isize",
+						Opt_debug_want_extra_isize),
+	fsparam_flag	("mblk_io_submit",	Opt_removed),
+	fsparam_flag	("nomblk_io_submit",	Opt_removed),
+	fsparam_flag	("block_validity",	Opt_block_validity),
+	fsparam_flag	("noblock_validity",	Opt_noblock_validity),
+	fsparam_u32	("inode_readahead_blks",
+						Opt_inode_readahead_blks),
+	fsparam_u32	("journal_ioprio",	Opt_journal_ioprio),
+	fsparam_bool	("auto_da_alloc",	Opt_auto_da_alloc),
+	fsparam_flag	("noauto_da_alloc",	Opt_noauto_da_alloc),
+	fsparam_flag	("dioread_nolock",	Opt_dioread_nolock),
+	fsparam_flag	("dioread_lock",	Opt_dioread_lock),
+	fsparam_flag	("discard",		Opt_discard),
+	fsparam_flag	("nodiscard",		Opt_nodiscard),
+	fsparam_u32_opt	("init_itable",		Opt_init_itable),
+	fsparam_flag	("noinit_itable",	Opt_noinit_itable),
+	fsparam_u32	("max_dir_size_kb",	Opt_max_dir_size_kb),
+	fsparam_flag	("test_dummy_encryption",
+						Opt_test_dummy_encryption),
+	fsparam_flag	("nombcache",		Opt_nombcache),
+	fsparam_flag	("no_mbcache",		Opt_nombcache),	/* for backward compatibility */
+	fsparam_string	("check",		Opt_removed),	/* mount option from ext2/3 */
+	fsparam_flag	("nocheck",		Opt_removed),	/* mount option from ext2/3 */
+	fsparam_flag	("reservation",		Opt_removed),	/* mount option from ext2/3 */
+	fsparam_flag	("noreservation",	Opt_removed),	/* mount option from ext2/3 */
+	fsparam_u32	("journal",		Opt_removed),	/* mount option from ext2/3 */
+	{}
+};
+
+static const struct fs_parameter_description ext4_fs_parameters = {
+	.name		= "ext4",
+	.specs		= ext4_param_specs,
+	.enums		= ext4_param_enums,
 };
 
 static const match_table_t tokens = {
diff --git a/include/linux/fs_parser.h b/include/linux/fs_parser.h
index dee140db6240..f704eb465cbd 100644
--- a/include/linux/fs_parser.h
+++ b/include/linux/fs_parser.h
@@ -133,11 +133,17 @@ static inline bool fs_validate_description(const struct fs_parameter_description
 				__fsparam(fs_param_is_u32_octal, NAME, OPT, 0)
 #define fsparam_u32hex(NAME, OPT) \
 				__fsparam(fs_param_is_u32_hex, NAME, OPT, 0)
+#define fsparam_u32_opt(NAME, OPT) \
+				__fsparam(fs_param_is_u32, NAME, OPT, \
+					  fs_param_v_optional)
 #define fsparam_s32(NAME, OPT)	__fsparam(fs_param_is_s32, NAME, OPT, 0)
 #define fsparam_u64(NAME, OPT)	__fsparam(fs_param_is_u64, NAME, OPT, 0)
 #define fsparam_enum(NAME, OPT)	__fsparam(fs_param_is_enum, NAME, OPT, 0)
 #define fsparam_string(NAME, OPT) \
 				__fsparam(fs_param_is_string, NAME, OPT, 0)
+#define fsparam_string_empty(NAME, OPT) \
+				__fsparam(fs_param_is_string, NAME, OPT, \
+					  fs_param_neg_with_empty)
 #define fsparam_blob(NAME, OPT)	__fsparam(fs_param_is_blob, NAME, OPT, 0)
 #define fsparam_bdev(NAME, OPT)	__fsparam(fs_param_is_blockdev, NAME, OPT, 0)
 #define fsparam_path(NAME, OPT)	__fsparam(fs_param_is_path, NAME, OPT, 0)
-- 
2.21.0


  parent reply	other threads:[~2019-11-06 10:15 UTC|newest]

Thread overview: 23+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2019-11-06 10:14 ext4: new mount API conversion Lukas Czerner
2019-11-06 10:14 ` [PATCH 01/17] vfs: Handle fs_param_neg_with_empty Lukas Czerner
2019-11-06 10:14 ` Lukas Czerner [this message]
2019-12-17  0:44   ` [PATCH 02/17] ext4: Add fs parameter description Al Viro
2019-12-17 12:19     ` Lukas Czerner
2019-12-17 15:20       ` Al Viro
2019-12-17 16:34         ` Lukas Czerner
2019-12-24 17:18           ` Al Viro
2019-11-06 10:14 ` [PATCH 03/17] ext4: move option validation to a separate function Lukas Czerner
2019-11-06 10:14 ` [PATCH 04/17] ext4: Change handle_mount_opt() to use fs_parameter Lukas Czerner
2019-11-06 10:14 ` [PATCH 05/17] ext4: Allow sb to be NULL in ext4_msg() Lukas Czerner
2019-11-06 10:14 ` [PATCH 06/17] ext4: move quota configuration out of handle_mount_opt() Lukas Czerner
2019-11-06 10:14 ` [PATCH 07/17] ext4: check ext2/3 compatibility outside handle_mount_opt() Lukas Czerner
2019-11-06 10:14 ` [PATCH 08/17] ext4: get rid of super block and sbi from handle_mount_ops() Lukas Czerner
2019-11-06 10:14 ` [PATCH 09/17] ext4: parse Opt_sb in handle_mount_opt() Lukas Czerner
2019-11-06 10:14 ` [PATCH 10/17] ext4: clean up return values " Lukas Czerner
2019-11-06 10:14 ` [PATCH 11/17] ext4: add ext4_get_tree for the new mount API Lukas Czerner
2019-11-06 10:14 ` [PATCH 12/17] ext4: refactor ext4_remount() Lukas Czerner
2019-11-06 10:14 ` [PATCH 13/17] ext4: add ext4_reconfigure for the new mount API Lukas Czerner
2019-11-06 10:14 ` [PATCH 14/17] ext4: add ext4_fc_free " Lukas Czerner
2019-11-06 10:14 ` [PATCH 15/17] ext4: switch to " Lukas Czerner
2019-11-06 10:14 ` [PATCH 16/17] ext4: change token2str() to use ext4_param_specs Lukas Czerner
2019-11-06 10:14 ` [PATCH 17/17] ext4: Remove unused code from old mount api Lukas Czerner

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=20191106101457.11237-3-lczerner@redhat.com \
    --to=lczerner@redhat.com \
    --cc=dhowells@redhat.com \
    --cc=linux-ext4@vger.kernel.org \
    --cc=tytso@mit.edu \
    --cc=viro@zeniv.linux.org.uk \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).