Patch "hostfs: convert hostfs to use the new mount API" has been added to the 6.6-stable tree
A message that is not in the archive (sent off-list or not yet received): [email protected]
Quoted 7 lines · Sasha Levin
This is a note to let you know that I've just added the patch titled
hostfs: convert hostfs to use the new mount API
to the 6.6-stable tree which can be found at:
http://www.kernel.org/git/?p=linux/kernel/git/stable/stable-queue.git;a=summary
Hi Sasha,
If this, the fix : ef9ca17ca458 ("hostfs: fix the host directory parse when mounting.") also should be added. It fixes the mounting bug when pass the host directory.
Thanks,
Hongbo
Quoted 193 lines
The filename of the patch is:
hostfs-convert-hostfs-to-use-the-new-mount-api.patch
and it can be found in the queue-6.6 subdirectory.If you, or anyone else, feels it should not be added to the stable tree, please let <[email protected]> know about it.
commit
6f2433956e6ade80d59bd673d4062ec2c1bacc3eAuthor: Hongbo Li <[email protected]> Date: Thu May 30 20:01:11 2024 +0800hostfs: convert hostfs to use the new mount API
[ Upstream commit
cd140ce9f611a5e9d2a5989a282b75e55c71dab3]Convert the hostfs filesystem to the new internal mount API as the old one will be obsoleted and removed. This allows greater flexibility in communication of mount parameters between userspace, the VFS and the filesystem.
See
Documentation/filesystems/mount_api.txtfor more information.Signed-off-by Hongbo Li <[email protected]>Signed-off-by Christian Brauner <[email protected]>Stable-dep-of:
60a600243244("hostfs: fix string handling in__dentry_name()")Signed-off-by Sasha Levin <[email protected]>fs/hostfs/hostfs_kern.c +62
-21@@ -16,11 +16,16 @@#include <linux/seq_file.h> #include <linux/writeback.h> #include <linux/mount.h> +#include <linux/fs_context.h> #include <linux/namei.h> #include "hostfs.h" #include <init.h> #include <kern.h> +struct hostfs_fs_info { +char *host_root_path; +}; +struct hostfs_inode_info {int fd;fmode_t mode;@@ -90,8 +95,10 @@ static char *__dentry_name(struct dentry *dentry, char *name)char *p =dentry_path_raw (dentry, name,PATH_MAX );char *root;size_t len; +struct hostfs_fs_info *fsi; - root = dentry->d_sb->s_fs_info; + fsi = dentry->d_sb->s_fs_info; + root = fsi->host_root_path; len =strlen (root);if (IS_ERR (p)) {__putname (name);@@ -196,8 +203,10 @@ static int hostfs_statfs(struct dentry *dentry, struct kstatfs *sf)long long f_bavail;long long f_files;long long f_ffree; +struct hostfs_fs_info *fsi; - err =do_statfs (dentry->d_sb->s_fs_info, + fsi = dentry->d_sb->s_fs_info; + err =do_statfs (fsi->host_root_path, &sf->f_bsize, &f_blocks, &f_bfree, &f_bavail, &f_files, &f_ffree, &sf->f_fsid,sizeof (sf->f_fsid), &sf->f_namelen);@@ -245,7 +254,11 @@ static void hostfs_free_inode(struct inode *inode)static int hostfs_show_options (struct seq_file *seq,struct dentry *root) { -const char *root_path = root->d_sb->s_fs_info; +struct hostfs_fs_info *fsi; +const char *root_path; + + fsi = root->d_sb->s_fs_info; + root_path = fsi->host_root_path;size_t offset =strlen (root_ino) +1 ;if (strlen (root_path) > offset)@@ -924,10 +937,11 @@ static const struct inode_operations hostfs_link_iops = { .get_link = hostfs_get_link, }; -static int hostfs_fill_sb_common (struct super_block *sb,void *d,int silent) +static int hostfs_fill_super (struct super_block *sb,struct fs_context *fc) { +struct hostfs_fs_info *fsi = sb->s_fs_info;struct inode *root_inode; -char *host_root_path, *req_root = d; +char *host_root = fc->source;int err; sb->s_blocksize =1024 ;@@ -941,15 +955,15 @@ static int hostfs_fill_sb_common(struct super_block *sb, void *d, int silent)return err;/* NULL is printed as '(null)' by printf(): avoid that. */ -if (req_root ==NULL ) - req_root ="" ; +if (fc->source ==NULL ) + host_root ="" ; - sb->s_fs_info = host_root_path = -kasprintf (GFP_KERNEL ,"%s/%s" , root_ino, req_root); -if (host_root_path ==NULL ) + fsi->host_root_path = +kasprintf (GFP_KERNEL ,"%s/%s" , root_ino, host_root); +if (fsi->host_root_path ==NULL )return -ENOMEM ; - root_inode =hostfs_iget (sb, host_root_path); + root_inode =hostfs_iget (sb, fsi->host_root_path);if (IS_ERR (root_inode))return PTR_ERR (root_inode);@@ -957,7 +971,7 @@ static int hostfs_fill_sb_common(struct super_block *sb, void *d, int silent)char *name;iput (root_inode); - name =follow_link (host_root_path); + name =follow_link (fsi->host_root_path);if (IS_ERR (name))return PTR_ERR (name);@@ -974,11 +988,38 @@ static int hostfs_fill_sb_common(struct super_block *sb, void *d, int silent)return 0 ; } -static struct dentry *hostfs_read_sb (struct file_system_type *type, -int flags,const char *dev_name, -void *data) +static int hostfs_fc_get_tree (struct fs_context *fc) { -return mount_nodev (type, flags, data, hostfs_fill_sb_common); +return get_tree_nodev (fc, hostfs_fill_super); +} + +static void hostfs_fc_free (struct fs_context *fc) +{ +struct hostfs_fs_info *fsi = fc->s_fs_info; + +if (!fsi) +return ; + +kfree (fsi->host_root_path); +kfree (fsi); +} + +static const struct fs_context_operations hostfs_context_ops = { + .get_tree = hostfs_fc_get_tree, + .free = hostfs_fc_free, +}; + +static int hostfs_init_fs_context (struct fs_context *fc) +{ +struct hostfs_fs_info *fsi; + + fsi =kzalloc (sizeof (*fsi),GFP_KERNEL ); +if (!fsi) +return -ENOMEM ; + + fc->s_fs_info = fsi; + fc->ops = &hostfs_context_ops; +return 0 ; }static void hostfs_kill_sb (struct super_block *s)@@ -988,11 +1029,11 @@ static void hostfs_kill_sb(struct super_block *s) }static struct file_system_type hostfs_type = { - .owner =THIS_MODULE , - .name ="hostfs" , - .mount = hostfs_read_sb, - .kill_sb = hostfs_kill_sb, - .fs_flags =0 , + .owner =THIS_MODULE , + .name ="hostfs" , + .init_fs_context = hostfs_init_fs_context, + .kill_sb = hostfs_kill_sb, + .fs_flags =0 , };MODULE_ALIAS_FS ("hostfs" );
Greg KH
maintainerQuoted 11 lines · Hongbo Li
Quoted 7 lines · Sasha Levin
This is a note to let you know that I've just added the patch titled
hostfs: convert hostfs to use the new mount API
to the 6.6-stable tree which can be found at:
http://www.kernel.org/git/?p=linux/kernel/git/stable/stable-queue.git;a=summary
Quoted 5 lines
Hi Sasha,
If this, the fix :
ef9ca17ca458("hostfs: fix the host directory parse when mounting.") also should be added. It fixes the mounting bug when pass the host directory.
I've swept the queues and have added the "fixes for the fixes" commits like this one now, thanks!
greg k-h
Well, by the way, is the patch added because there are use cases for the new mount API in hostfs?
Thanks,
Hongbo
Quoted 22 lines · Greg KH
Quoted 11 lines · Hongbo Li
Quoted 7 lines · Sasha Levin
This is a note to let you know that I've just added the patch titled
hostfs: convert hostfs to use the new mount API
to the 6.6-stable tree which can be found at:
http://www.kernel.org/git/?p=linux/kernel/git/stable/stable-queue.git;a=summaryQuoted 5 lines
Hi Sasha,
If this, the fix :
ef9ca17ca458("hostfs: fix the host directory parse when mounting.") also should be added. It fixes the mounting bug when pass the host directory.I've swept the queues and have added the "fixes for the fixes" commits like this one now, thanks!
greg k-h
Greg KH
maintainerQuoted 2 lines · Hongbo Li
Well, by the way, is the patch added because there are use cases for the new mount API in hostfs?
I am sorry, I don't understand the question.
greg k-h
Quoted 6 lines · Greg KH
Quoted 2 lines · Hongbo Li
Well, by the way, is the patch added because there are use cases for the new mount API in hostfs?
I am sorry, I don't understand the question.
Sorry for my poor expression, I just wonder why this patch should be backported to the 6.6-stable tree. :)
Thanks,
Hongbo
Quoted 1 line
greg k-h
Greg KH
maintainerQuoted 4 lines · Hongbo Li
Quoted 1 line · Greg KH
On Thu, Feb 06, 2025 at 09:09:17AM +0800, Hongbo Li wrote:
Quoted 8 lines
Quoted 5 lines
Quoted 2 lines
Well, by the way, is the patch added because there are use cases for the new mount API in hostfs?
I am sorry, I don't understand the question.
Sorry for my poor expression, I just wonder why this patch should be backported to the 6.6-stable tree. :)
Ah. It was a dependency for a patch later in the series, and was documented as such with the "Stable-dep-of:" line in the commit.
thanks,
greg k-h