Linux Documentation
 help / color / mirror / Atom feed
* [PATCH 0/4] enhance the path resolution capability in fs_parser
@ 2024-05-27  1:47 Hongbo Li
  2024-05-27  1:47 ` [PATCH 1/4] fs: add blockdev parser for filesystem mount option Hongbo Li
                   ` (3 more replies)
  0 siblings, 4 replies; 6+ messages in thread
From: Hongbo Li @ 2024-05-27  1:47 UTC (permalink / raw)
  To: viro, brauner, jack, tytso, adilger.kernel
  Cc: lczerner, cmaiolino, linux-fsdevel, linux-doc, yi.zhang,
	lihongbo22

Mount options with path should be parsed into block device or inode. As
the new mount API provides a serial of parsers, path should also be 
looked up into block device within these parsers, not in each specific
filesystem.

The following is a brief overview of the patches, see the patches for
more details.

Patch 1-2: Enhance the path resolution capability in fs_parser.
Patch 3: Fix the `journal_path` options error in ext4. 
Patch 4: Remove the `fs_lookup_param` and its description.

Comments and questions are, as always, welcome.

Thanks,
Hongbo

Hongbo Li (4):
  fs: add blockdev parser for filesystem mount option.
  fs: add path parser for filesystem mount option.
  fs: ext4: support relative path for `journal_path` in mount option.
  fs: remove fs_lookup_param and its description.

 Documentation/filesystems/mount_api.rst |  17 +---
 fs/ext4/super.c                         |  26 +----
 fs/fs_parser.c                          | 125 +++++++++++++-----------
 include/linux/fs_parser.h               |   7 +-
 4 files changed, 71 insertions(+), 104 deletions(-)

-- 
2.34.1


^ permalink raw reply	[flat|nested] 6+ messages in thread

* [PATCH 1/4] fs: add blockdev parser for filesystem mount option.
  2024-05-27  1:47 [PATCH 0/4] enhance the path resolution capability in fs_parser Hongbo Li
@ 2024-05-27  1:47 ` Hongbo Li
  2024-05-27  3:22   ` kernel test robot
  2024-05-27  1:47 ` [PATCH 2/4] fs: add path " Hongbo Li
                   ` (2 subsequent siblings)
  3 siblings, 1 reply; 6+ messages in thread
From: Hongbo Li @ 2024-05-27  1:47 UTC (permalink / raw)
  To: viro, brauner, jack, tytso, adilger.kernel
  Cc: lczerner, cmaiolino, linux-fsdevel, linux-doc, yi.zhang,
	lihongbo22

`fsparam_bdev` uses `fs_param_is_blockdev` to parse the option, but it
is currently empty. Filesystems like ext4 use the `fsparam_bdev` to
parse `journal_path` into the block device. This general logic should
be moved to the vfs layer, not the specific filesystem. Therefore, we
implement block device parser in `fs_param_is_blockdev`. And the logic
is similar with `fs_lookup_param`.

Signed-off-by: Hongbo Li <lihongbo22@huawei.com>
---
 fs/fs_parser.c | 51 +++++++++++++++++++++++++++++++++++++++++++++++++-
 1 file changed, 50 insertions(+), 1 deletion(-)

diff --git a/fs/fs_parser.c b/fs/fs_parser.c
index a4d6ca0b8971..48f60ecfcca0 100644
--- a/fs/fs_parser.c
+++ b/fs/fs_parser.c
@@ -311,7 +311,56 @@ EXPORT_SYMBOL(fs_param_is_fd);
 int fs_param_is_blockdev(struct p_log *log, const struct fs_parameter_spec *p,
 		  struct fs_parameter *param, struct fs_parse_result *result)
 {
-	return 0;
+	int ret;
+	int dfd;
+	struct filename *f;
+	struct inode *dev_inode;
+	struct path path;
+	bool put_f;
+
+	switch (param->type) {
+	case fs_value_is_string:
+		if (!*param->string) {
+			if (p->flags & fs_param_can_be_empty)
+				return 0;
+			break;
+		}
+		f = getname_kernel(param->string);
+		if (IS_ERR(f))
+			return fs_param_bad_value(log, param);
+		dfd = AT_FDCWD;
+		put_f = true;
+		break;
+	case fs_value_is_filename:
+		f = param->name;
+		dfd = param->dirfd;
+		put_f = false;
+		break;
+	default:
+		return fs_param_bad_value(log, param);
+	}
+
+	ret = filename_lookup(dfd, f, LOOKUP_FOLLOW, &path, NULL);
+	if (ret < 0) {
+		error_plog(log, "%s: Lookup failure for '%s'", param->key, f->name);
+		goto out_putname;
+	}
+
+	dev_inode = d_backing_inode(path.dentry);
+	if (!S_ISBLK(dev_inode->i_mode)) {
+		error_plog(log, "%s: Non-blockdev passed as '%s'", param->key, f->name);
+		ret = -1;
+		goto out_putpath;
+	}
+	result->uint_32 = new_encode_dev(dev_inode->i_rdev);
+
+out_putpath:
+	path_put(&path);
+out_putname:
+	if (put_f)
+		putname(f);
+
+	return (ret < 0) ? fs_param_bad_value(log, param) : 0;
 }
 EXPORT_SYMBOL(fs_param_is_blockdev);
 
-- 
2.34.1


^ permalink raw reply related	[flat|nested] 6+ messages in thread

* [PATCH 2/4] fs: add path parser for filesystem mount option.
  2024-05-27  1:47 [PATCH 0/4] enhance the path resolution capability in fs_parser Hongbo Li
  2024-05-27  1:47 ` [PATCH 1/4] fs: add blockdev parser for filesystem mount option Hongbo Li
@ 2024-05-27  1:47 ` Hongbo Li
  2024-05-27  1:47 ` [PATCH 3/4] fs: ext4: support relative path for `journal_path` in " Hongbo Li
  2024-05-27  1:47 ` [PATCH 4/4] fs: remove fs_lookup_param and its description Hongbo Li
  3 siblings, 0 replies; 6+ messages in thread
From: Hongbo Li @ 2024-05-27  1:47 UTC (permalink / raw)
  To: viro, brauner, jack, tytso, adilger.kernel
  Cc: lczerner, cmaiolino, linux-fsdevel, linux-doc, yi.zhang,
	lihongbo22

`fsparam_path` uses `fs_param_is_path` to parse the option, but it
is currently empty. The new mount api has considered this option in
`fsconfig`(that is FSCONFIG_SET_PATH). Here we add general path parser
in filesystem layer. Currently, no filesystem uses this function to
parse parameters, we add `void *ptr` in `fs_parse_result` to point to
the target structure(such as `struct inode *`).

Signed-off-by: Hongbo Li <lihongbo22@huawei.com>
---
 fs/fs_parser.c            | 18 ++++++++++++++++++
 include/linux/fs_parser.h |  1 +
 2 files changed, 19 insertions(+)

diff --git a/fs/fs_parser.c b/fs/fs_parser.c
index 48f60ecfcca0..c41a13e564c4 100644
--- a/fs/fs_parser.c
+++ b/fs/fs_parser.c
@@ -367,6 +367,24 @@ EXPORT_SYMBOL(fs_param_is_blockdev);
 int fs_param_is_path(struct p_log *log, const struct fs_parameter_spec *p,
 		     struct fs_parameter *param, struct fs_parse_result *result)
 {
+	int ret;
+	struct filename *f;
+	struct path path;
+
+	if (param->type != fs_value_is_filename)
+		return fs_param_bad_value(log, param);
+	if (!*param->string && (p->flags & fs_param_can_be_empty))
+		return 0;
+
+	f = param->name;
+	ret = filename_lookup(param->dirfd, f, LOOKUP_FOLLOW, &path, NULL);
+	if (ret < 0) {
+		error_plog(log, "%s: Lookup failure for '%s'", param->key, f->name);
+		return fs_param_bad_value(log, param);
+	}
+	result->ptr = d_backing_inode(path.dentry);
+	path_put(&path);
+
 	return 0;
 }
 EXPORT_SYMBOL(fs_param_is_path);
diff --git a/include/linux/fs_parser.h b/include/linux/fs_parser.h
index d3350979115f..489c71d06a5f 100644
--- a/include/linux/fs_parser.h
+++ b/include/linux/fs_parser.h
@@ -57,6 +57,7 @@ struct fs_parse_result {
 		int		int_32;		/* For spec_s32/spec_enum */
 		unsigned int	uint_32;	/* For spec_u32{,_octal,_hex}/spec_enum */
 		u64		uint_64;	/* For spec_u64 */
+		const void	*ptr;		/* For spec_ptr */
 	};
 };
 
-- 
2.34.1


^ permalink raw reply related	[flat|nested] 6+ messages in thread

* [PATCH 3/4] fs: ext4: support relative path for `journal_path` in mount option.
  2024-05-27  1:47 [PATCH 0/4] enhance the path resolution capability in fs_parser Hongbo Li
  2024-05-27  1:47 ` [PATCH 1/4] fs: add blockdev parser for filesystem mount option Hongbo Li
  2024-05-27  1:47 ` [PATCH 2/4] fs: add path " Hongbo Li
@ 2024-05-27  1:47 ` Hongbo Li
  2024-05-27  1:47 ` [PATCH 4/4] fs: remove fs_lookup_param and its description Hongbo Li
  3 siblings, 0 replies; 6+ messages in thread
From: Hongbo Li @ 2024-05-27  1:47 UTC (permalink / raw)
  To: viro, brauner, jack, tytso, adilger.kernel
  Cc: lczerner, cmaiolino, linux-fsdevel, linux-doc, yi.zhang,
	lihongbo22

After `fs_param_is_blockdev` is implemented(in fs: add blockdev parser
for filesystem mount option.), `journal_devnum` can be obtained from
`result.uint_32` directly.

Additionally, the `fs_lookup_param` did not consider the relative path
for block device. When we mount ext4 with `journal_path` option using
relative path, `param->dirfd` was not set which will cause mounting
error.

This can be reproduced easily like this:

mke2fs -F -O journal_dev $JOURNAL_DEV -b 4096 100M
mkfs.ext4 -F -J device=$JOURNAL_DEV -b 4096 $FS_DEV
cd /dev; mount -t ext4 -o journal_path=`basename $JOURNAL_DEV` $FS_DEV $MNT

Fixes: 461c3af045d3 ("ext4: Change handle_mount_opt() to use fs_parameter")
Signed-off-by: Hongbo Li <lihongbo22@huawei.com>
---
 fs/ext4/super.c | 26 +-------------------------
 1 file changed, 1 insertion(+), 25 deletions(-)

diff --git a/fs/ext4/super.c b/fs/ext4/super.c
index c682fb927b64..94b39bcae99d 100644
--- a/fs/ext4/super.c
+++ b/fs/ext4/super.c
@@ -2290,39 +2290,15 @@ static int ext4_parse_param(struct fs_context *fc, struct fs_parameter *param)
 		ctx->spec |= EXT4_SPEC_s_resgid;
 		return 0;
 	case Opt_journal_dev:
-		if (is_remount) {
-			ext4_msg(NULL, KERN_ERR,
-				 "Cannot specify journal on remount");
-			return -EINVAL;
-		}
-		ctx->journal_devnum = result.uint_32;
-		ctx->spec |= EXT4_SPEC_JOURNAL_DEV;
-		return 0;
 	case Opt_journal_path:
-	{
-		struct inode *journal_inode;
-		struct path path;
-		int error;
-
 		if (is_remount) {
 			ext4_msg(NULL, KERN_ERR,
 				 "Cannot specify journal on remount");
 			return -EINVAL;
 		}
-
-		error = fs_lookup_param(fc, param, 1, LOOKUP_FOLLOW, &path);
-		if (error) {
-			ext4_msg(NULL, KERN_ERR, "error: could not find "
-				 "journal device path");
-			return -EINVAL;
-		}
-
-		journal_inode = d_inode(path.dentry);
-		ctx->journal_devnum = new_encode_dev(journal_inode->i_rdev);
+		ctx->journal_devnum = result.uint_32;
 		ctx->spec |= EXT4_SPEC_JOURNAL_DEV;
-		path_put(&path);
 		return 0;
-	}
 	case Opt_journal_ioprio:
 		if (result.uint_32 > 7) {
 			ext4_msg(NULL, KERN_ERR, "Invalid journal IO priority"
-- 
2.34.1


^ permalink raw reply related	[flat|nested] 6+ messages in thread

* [PATCH 4/4] fs: remove fs_lookup_param and its description.
  2024-05-27  1:47 [PATCH 0/4] enhance the path resolution capability in fs_parser Hongbo Li
                   ` (2 preceding siblings ...)
  2024-05-27  1:47 ` [PATCH 3/4] fs: ext4: support relative path for `journal_path` in " Hongbo Li
@ 2024-05-27  1:47 ` Hongbo Li
  3 siblings, 0 replies; 6+ messages in thread
From: Hongbo Li @ 2024-05-27  1:47 UTC (permalink / raw)
  To: viro, brauner, jack, tytso, adilger.kernel
  Cc: lczerner, cmaiolino, linux-fsdevel, linux-doc, yi.zhang,
	lihongbo22

After `fs_param_is_blockdev` and `fs_param_is_path` are implemented,
there are no need to lookup the path with `fs_lookup_param`, and
`fs_parse` is sufficient.

Signed-off-by: Hongbo Li <lihongbo22@huawei.com>
---
 Documentation/filesystems/mount_api.rst | 17 +-------
 fs/fs_parser.c                          | 56 -------------------------
 include/linux/fs_parser.h               |  6 ---
 3 files changed, 1 insertion(+), 78 deletions(-)

diff --git a/Documentation/filesystems/mount_api.rst b/Documentation/filesystems/mount_api.rst
index 9aaf6ef75eb5..f92d96758e57 100644
--- a/Documentation/filesystems/mount_api.rst
+++ b/Documentation/filesystems/mount_api.rst
@@ -253,7 +253,7 @@ manage the filesystem context.  They are as follows:
      will have been weeded out and fc->sb_flags updated in the context.
      Security options will also have been weeded out and fc->security updated.
 
-     The parameter can be parsed with fs_parse() and fs_lookup_param().  Note
+     The parameter can be parsed with fs_parse().  Note
      that the source(s) are presented as parameters named "source".
 
      If successful, 0 should be returned or a negative error code otherwise.
@@ -796,18 +796,3 @@ process the parameters it is given.
      If the parameter isn't matched, -ENOPARAM will be returned; if the
      parameter is matched, but the value is erroneous, -EINVAL will be
      returned; otherwise the parameter's option number will be returned.
-
-   * ::
-
-       int fs_lookup_param(struct fs_context *fc,
-			   struct fs_parameter *value,
-			   bool want_bdev,
-			   unsigned int flags,
-			   struct path *_path);
-
-     This takes a parameter that carries a string or filename type and attempts
-     to do a path lookup on it.  If the parameter expects a blockdev, a check
-     is made that the inode actually represents one.
-
-     Returns 0 if successful and ``*_path`` will be set; returns a negative
-     error code if not.
diff --git a/fs/fs_parser.c b/fs/fs_parser.c
index c41a13e564c4..071c0f9d0121 100644
--- a/fs/fs_parser.c
+++ b/fs/fs_parser.c
@@ -133,62 +133,6 @@ int __fs_parse(struct p_log *log,
 }
 EXPORT_SYMBOL(__fs_parse);
 
-/**
- * fs_lookup_param - Look up a path referred to by a parameter
- * @fc: The filesystem context to log errors through.
- * @param: The parameter.
- * @want_bdev: T if want a blockdev
- * @flags: Pathwalk flags passed to filename_lookup()
- * @_path: The result of the lookup
- */
-int fs_lookup_param(struct fs_context *fc,
-		    struct fs_parameter *param,
-		    bool want_bdev,
-		    unsigned int flags,
-		    struct path *_path)
-{
-	struct filename *f;
-	bool put_f;
-	int ret;
-
-	switch (param->type) {
-	case fs_value_is_string:
-		f = getname_kernel(param->string);
-		if (IS_ERR(f))
-			return PTR_ERR(f);
-		put_f = true;
-		break;
-	case fs_value_is_filename:
-		f = param->name;
-		put_f = false;
-		break;
-	default:
-		return invalf(fc, "%s: not usable as path", param->key);
-	}
-
-	ret = filename_lookup(param->dirfd, f, flags, _path, NULL);
-	if (ret < 0) {
-		errorf(fc, "%s: Lookup failure for '%s'", param->key, f->name);
-		goto out;
-	}
-
-	if (want_bdev &&
-	    !S_ISBLK(d_backing_inode(_path->dentry)->i_mode)) {
-		path_put(_path);
-		_path->dentry = NULL;
-		_path->mnt = NULL;
-		errorf(fc, "%s: Non-blockdev passed as '%s'",
-		       param->key, f->name);
-		ret = -ENOTBLK;
-	}
-
-out:
-	if (put_f)
-		putname(f);
-	return ret;
-}
-EXPORT_SYMBOL(fs_lookup_param);
-
 static int fs_param_bad_value(struct p_log *log, struct fs_parameter *param)
 {
 	return inval_plog(log, "Bad value for '%s'", param->key);
diff --git a/include/linux/fs_parser.h b/include/linux/fs_parser.h
index 489c71d06a5f..fa2745254818 100644
--- a/include/linux/fs_parser.h
+++ b/include/linux/fs_parser.h
@@ -74,12 +74,6 @@ static inline int fs_parse(struct fs_context *fc,
 	return __fs_parse(&fc->log, desc, param, result);
 }
 
-extern int fs_lookup_param(struct fs_context *fc,
-			   struct fs_parameter *param,
-			   bool want_bdev,
-			   unsigned int flags,
-			   struct path *_path);
-
 extern int lookup_constant(const struct constant_table tbl[], const char *name, int not_found);
 
 #ifdef CONFIG_VALIDATE_FS_PARSER
-- 
2.34.1


^ permalink raw reply related	[flat|nested] 6+ messages in thread

* Re: [PATCH 1/4] fs: add blockdev parser for filesystem mount option.
  2024-05-27  1:47 ` [PATCH 1/4] fs: add blockdev parser for filesystem mount option Hongbo Li
@ 2024-05-27  3:22   ` kernel test robot
  0 siblings, 0 replies; 6+ messages in thread
From: kernel test robot @ 2024-05-27  3:22 UTC (permalink / raw)
  To: Hongbo Li, viro, brauner, jack, tytso, adilger.kernel
  Cc: llvm, oe-kbuild-all, lczerner, cmaiolino, linux-fsdevel,
	linux-doc, yi.zhang, lihongbo22

Hi Hongbo,

kernel test robot noticed the following build warnings:

[auto build test WARNING on tytso-ext4/dev]
[also build test WARNING on brauner-vfs/vfs.all linus/master v6.10-rc1 next-20240523]
[If your patch is applied to the wrong git tree, kindly drop us a note.
And when submitting patch, we suggest to use '--base' as documented in
https://git-scm.com/docs/git-format-patch#_base_tree_information]

url:    https://github.com/intel-lab-lkp/linux/commits/Hongbo-Li/fs-add-blockdev-parser-for-filesystem-mount-option/20240527-094930
base:   https://git.kernel.org/pub/scm/linux/kernel/git/tytso/ext4.git dev
patch link:    https://lore.kernel.org/r/20240527014717.690140-2-lihongbo22%40huawei.com
patch subject: [PATCH 1/4] fs: add blockdev parser for filesystem mount option.
config: x86_64-allnoconfig (https://download.01.org/0day-ci/archive/20240527/202405271100.aGNNnrKK-lkp@intel.com/config)
compiler: clang version 18.1.5 (https://github.com/llvm/llvm-project 617a15a9eac96088ae5e9134248d8236e34b91b1)
reproduce (this is a W=1 build): (https://download.01.org/0day-ci/archive/20240527/202405271100.aGNNnrKK-lkp@intel.com/reproduce)

If you fix the issue in a separate patch/commit (i.e. not just a new version of
the same patch/commit), kindly add following tags
| Reported-by: kernel test robot <lkp@intel.com>
| Closes: https://lore.kernel.org/oe-kbuild-all/202405271100.aGNNnrKK-lkp@intel.com/

All warnings (new ones prefixed by >>):

>> fs/fs_parser.c:324:8: warning: variable 'f' is used uninitialized whenever 'if' condition is false [-Wsometimes-uninitialized]
     324 |                         if (p->flags & fs_param_can_be_empty)
         |                             ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
   fs/fs_parser.c:343:29: note: uninitialized use occurs here
     343 |         ret = filename_lookup(dfd, f, LOOKUP_FOLLOW, &path, NULL);
         |                                    ^
   fs/fs_parser.c:324:4: note: remove the 'if' if its condition is always true
     324 |                         if (p->flags & fs_param_can_be_empty)
         |                         ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
     325 |                                 return 0;
   fs/fs_parser.c:316:20: note: initialize the variable 'f' to silence this warning
     316 |         struct filename *f;
         |                           ^
         |                            = NULL
>> fs/fs_parser.c:324:8: warning: variable 'put_f' is used uninitialized whenever 'if' condition is false [-Wsometimes-uninitialized]
     324 |                         if (p->flags & fs_param_can_be_empty)
         |                             ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
   fs/fs_parser.c:360:6: note: uninitialized use occurs here
     360 |         if (put_f)
         |             ^~~~~
   fs/fs_parser.c:324:4: note: remove the 'if' if its condition is always true
     324 |                         if (p->flags & fs_param_can_be_empty)
         |                         ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
     325 |                                 return 0;
   fs/fs_parser.c:319:12: note: initialize the variable 'put_f' to silence this warning
     319 |         bool put_f;
         |                   ^
         |                    = 0
>> fs/fs_parser.c:324:8: warning: variable 'dfd' is used uninitialized whenever 'if' condition is false [-Wsometimes-uninitialized]
     324 |                         if (p->flags & fs_param_can_be_empty)
         |                             ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
   fs/fs_parser.c:343:24: note: uninitialized use occurs here
     343 |         ret = filename_lookup(dfd, f, LOOKUP_FOLLOW, &path, NULL);
         |                               ^~~
   fs/fs_parser.c:324:4: note: remove the 'if' if its condition is always true
     324 |                         if (p->flags & fs_param_can_be_empty)
         |                         ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
     325 |                                 return 0;
   fs/fs_parser.c:315:9: note: initialize the variable 'dfd' to silence this warning
     315 |         int dfd;
         |                ^
         |                 = 0
   3 warnings generated.


vim +324 fs/fs_parser.c

   310	
   311	int fs_param_is_blockdev(struct p_log *log, const struct fs_parameter_spec *p,
   312			  struct fs_parameter *param, struct fs_parse_result *result)
   313	{
   314		int ret;
   315		int dfd;
   316		struct filename *f;
   317		struct inode *dev_inode;
   318		struct path path;
   319		bool put_f;
   320	
   321		switch (param->type) {
   322		case fs_value_is_string:
   323			if (!*param->string) {
 > 324				if (p->flags & fs_param_can_be_empty)
   325					return 0;
   326				break;
   327			}
   328			f = getname_kernel(param->string);
   329			if (IS_ERR(f))
   330				return fs_param_bad_value(log, param);
   331			dfd = AT_FDCWD;
   332			put_f = true;
   333			break;
   334		case fs_value_is_filename:
   335			f = param->name;
   336			dfd = param->dirfd;
   337			put_f = false;
   338			break;
   339		default:
   340			return fs_param_bad_value(log, param);
   341		}
   342	
   343		ret = filename_lookup(dfd, f, LOOKUP_FOLLOW, &path, NULL);
   344		if (ret < 0) {
   345			error_plog(log, "%s: Lookup failure for '%s'", param->key, f->name);
   346			goto out_putname;
   347		}
   348	
   349		dev_inode = d_backing_inode(path.dentry);
   350		if (!S_ISBLK(dev_inode->i_mode)) {
   351			error_plog(log, "%s: Non-blockdev passed as '%s'", param->key, f->name);
   352			ret = -1;
   353			goto out_putpath;
   354		}
   355		result->uint_32 = new_encode_dev(dev_inode->i_rdev);
   356	
   357	out_putpath:
   358		path_put(&path);
   359	out_putname:
   360		if (put_f)
   361			putname(f);
   362	
   363		return (ret < 0) ? fs_param_bad_value(log, param) : 0;
   364	}
   365	EXPORT_SYMBOL(fs_param_is_blockdev);
   366	

-- 
0-DAY CI Kernel Test Service
https://github.com/intel/lkp-tests/wiki

^ permalink raw reply	[flat|nested] 6+ messages in thread

end of thread, other threads:[~2024-05-27  3:23 UTC | newest]

Thread overview: 6+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2024-05-27  1:47 [PATCH 0/4] enhance the path resolution capability in fs_parser Hongbo Li
2024-05-27  1:47 ` [PATCH 1/4] fs: add blockdev parser for filesystem mount option Hongbo Li
2024-05-27  3:22   ` kernel test robot
2024-05-27  1:47 ` [PATCH 2/4] fs: add path " Hongbo Li
2024-05-27  1:47 ` [PATCH 3/4] fs: ext4: support relative path for `journal_path` in " Hongbo Li
2024-05-27  1:47 ` [PATCH 4/4] fs: remove fs_lookup_param and its description Hongbo Li

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox