diff options
Diffstat (limited to 'fs/kernfs/mount.c')
| -rw-r--r-- | fs/kernfs/mount.c | 8 |
1 files changed, 7 insertions, 1 deletions
diff --git a/fs/kernfs/mount.c b/fs/kernfs/mount.c index 0d6ce895a9ee..0f4152defe7b 100644 --- a/fs/kernfs/mount.c +++ b/fs/kernfs/mount.c | |||
| @@ -94,6 +94,7 @@ const void *kernfs_super_ns(struct super_block *sb) | |||
| 94 | * @fs_type: file_system_type of the fs being mounted | 94 | * @fs_type: file_system_type of the fs being mounted |
| 95 | * @flags: mount flags specified for the mount | 95 | * @flags: mount flags specified for the mount |
| 96 | * @root: kernfs_root of the hierarchy being mounted | 96 | * @root: kernfs_root of the hierarchy being mounted |
| 97 | * @new_sb_created: tell the caller if we allocated a new superblock | ||
| 97 | * @ns: optional namespace tag of the mount | 98 | * @ns: optional namespace tag of the mount |
| 98 | * | 99 | * |
| 99 | * This is to be called from each kernfs user's file_system_type->mount() | 100 | * This is to be called from each kernfs user's file_system_type->mount() |
| @@ -104,7 +105,8 @@ const void *kernfs_super_ns(struct super_block *sb) | |||
| 104 | * The return value can be passed to the vfs layer verbatim. | 105 | * The return value can be passed to the vfs layer verbatim. |
| 105 | */ | 106 | */ |
| 106 | struct dentry *kernfs_mount_ns(struct file_system_type *fs_type, int flags, | 107 | struct dentry *kernfs_mount_ns(struct file_system_type *fs_type, int flags, |
| 107 | struct kernfs_root *root, const void *ns) | 108 | struct kernfs_root *root, bool *new_sb_created, |
| 109 | const void *ns) | ||
| 108 | { | 110 | { |
| 109 | struct super_block *sb; | 111 | struct super_block *sb; |
| 110 | struct kernfs_super_info *info; | 112 | struct kernfs_super_info *info; |
| @@ -122,6 +124,10 @@ struct dentry *kernfs_mount_ns(struct file_system_type *fs_type, int flags, | |||
| 122 | kfree(info); | 124 | kfree(info); |
| 123 | if (IS_ERR(sb)) | 125 | if (IS_ERR(sb)) |
| 124 | return ERR_CAST(sb); | 126 | return ERR_CAST(sb); |
| 127 | |||
| 128 | if (new_sb_created) | ||
| 129 | *new_sb_created = !sb->s_root; | ||
| 130 | |||
| 125 | if (!sb->s_root) { | 131 | if (!sb->s_root) { |
| 126 | error = kernfs_fill_super(sb); | 132 | error = kernfs_fill_super(sb); |
| 127 | if (error) { | 133 | if (error) { |
