Merge branch 'vfs-7.4.shared.super' of git://git.kernel.org/pub/scm/linux/kernel/git/vfs/vfs.git

Pull 'vfs-7.4.shared.super' to support shared superblocks for EROFS
file-backed mounts, which would be better to merge through the VFS tree.

Cc: Christian Brauner <brauner@kernel.org>
Signed-off-by: Gao Xiang <xiang@kernel.org>
This commit is contained in:
Gao Xiang 2026-10-12 23:42:39 +08:00
commit 39940c34b2
2 changed files with 19 additions and 4 deletions

View File

@ -1374,7 +1374,17 @@ static int test_single_super(struct super_block *s, struct fs_context *fc)
return 1;
}
static int vfs_get_super(struct fs_context *fc,
/**
* get_tree_super - Get a superblock, optionally sharing an existing one
* @fc: The filesystem context holding the parameters
* @test: Comparison function to find a matching existing superblock, or NULL
* @fill_super: Helper to initialise a new superblock
*
* If @test is non-NULL and matches an existing superblock, that superblock is
* reused; otherwise a new anonymous superblock is created and initialised with
* @fill_super. Passing NULL for @test always creates a new superblock.
*/
int get_tree_super(struct fs_context *fc,
int (*test)(struct super_block *, struct fs_context *),
int (*fill_super)(struct super_block *sb,
struct fs_context *fc))
@ -1401,12 +1411,13 @@ static int vfs_get_super(struct fs_context *fc,
deactivate_locked_super(sb);
return err;
}
EXPORT_SYMBOL_GPL(get_tree_super);
int get_tree_nodev(struct fs_context *fc,
int (*fill_super)(struct super_block *sb,
struct fs_context *fc))
{
return vfs_get_super(fc, NULL, fill_super);
return get_tree_super(fc, NULL, fill_super);
}
EXPORT_SYMBOL(get_tree_nodev);
@ -1414,7 +1425,7 @@ int get_tree_single(struct fs_context *fc,
int (*fill_super)(struct super_block *sb,
struct fs_context *fc))
{
return vfs_get_super(fc, test_single_super, fill_super);
return get_tree_super(fc, test_single_super, fill_super);
}
EXPORT_SYMBOL(get_tree_single);
@ -1424,7 +1435,7 @@ int get_tree_keyed(struct fs_context *fc,
void *key)
{
fc->s_fs_info = key;
return vfs_get_super(fc, test_keyed_super, fill_super);
return get_tree_super(fc, test_keyed_super, fill_super);
}
EXPORT_SYMBOL(get_tree_keyed);

View File

@ -150,6 +150,10 @@ extern int vfs_parse_fs_param_source(struct fs_context *fc,
struct fs_parameter *param);
extern void fc_drop_locked(struct fs_context *fc);
int get_tree_super(struct fs_context *fc,
int (*test)(struct super_block *, struct fs_context *),
int (*fill_super)(struct super_block *sb,
struct fs_context *fc));
extern int get_tree_nodev(struct fs_context *fc,
int (*fill_super)(struct super_block *sb,
struct fs_context *fc));