[Devel] [PATCH RHEL7 COMMIT] Revert "fs: add data pointer to mount_ns()"
Konstantin Khorenko
khorenko at virtuozzo.com
Fri Aug 28 05:10:58 PDT 2015
The commit is pushed to "branch-rh7-3.10.0-229.7.2-ovz" and will appear at https://src.openvz.org/scm/ovz/vzkernel.git
after rh7-3.10.0-229.7.2.vz7.6.3
------>
commit 8d9d5a10d874b4d9f66f1af3fdcabbe9aee396f2
Author: Vladimir Davydov <vdavydov at parallels.com>
Date: Fri Aug 28 16:10:58 2015 +0400
Revert "fs: add data pointer to mount_ns()"
Patchset description:
Rework devtmpfs virtualization
Currently, we implement full-featured devtmpfs virtualization for VE:
when a device is created in a VE "namespace", we send a signal to
kdevtmpfs to create the devnode on devtmpfs mount corresponding to the
VE. This seems to be over-complicated: all this work can be done from
userspace, because we only have a hardcoded list of devices created
exclusively for VE on container start. Those are tty-related stuff and
mem devices, and we only need the latter to create devtmpfs nodes.
Moreover, it is buggy: ve_stop_ns, which destroys VE devtmpfs mount can
be called before a VE tty device is unregistered, resulting in a KP:
https://jira.sw.ru/browse/PSBM-35077
This patch therefore simplifies it. It makes the kernel only provide a
single empty tmpfs mount per VE, which appears on an attempt to mount
devtmpfs from inside a VE. The content of the fs is to be filled by the
userspace on container start, which will be done in the scope of
https://jira.sw.ru/browse/PSBM-35146
Vladimir Davydov (6):
Revert "ve/devtmpfs: Create required devices on container startup"
Revert "ve/devtmpfs: pass proper options string"
Revert "devtmpfs: containerize it with new obj ns operation"
Revert "fs: add data pointer to mount_ns()"
Revert "devtmpfs: per-VE mounts introduced"
devtmpfs: lightweight virtualization
Reviewed-by: Cyrill Gorcunov <gorcunov at virtuozzo.com>
===
This patch description:
This reverts commit 69e6ae7f750fc862c9324441130abbff2c8b528e.
This is only needed for per-ns filesystems that can accept user options.
There is the only such a filesystem, devtmpfs, which we made per
container. Since devtmpfs virtualization is going to be dropped, this
patch is not necessary.
Signed-off-by: Vladimir Davydov <vdavydov at parallels.com>
---
drivers/base/devtmpfs.c | 4 ++--
fs/binfmt_misc.c | 2 +-
fs/nfsd/nfsctl.c | 2 +-
fs/super.c | 4 ++--
include/linux/fs.h | 2 +-
ipc/mqueue.c | 2 +-
net/sunrpc/rpc_pipe.c | 2 +-
7 files changed, 9 insertions(+), 9 deletions(-)
diff --git a/drivers/base/devtmpfs.c b/drivers/base/devtmpfs.c
index 349d6eb..6f4ba37 100644
--- a/drivers/base/devtmpfs.c
+++ b/drivers/base/devtmpfs.c
@@ -59,9 +59,9 @@ static struct dentry *dev_mount(struct file_system_type *fs_type, int flags,
const char *dev_name, void *data)
{
#ifdef CONFIG_TMPFS
- return mount_ns(fs_type, flags, data, get_exec_env(), shmem_fill_super);
+ return mount_ns(fs_type, flags, data, shmem_fill_super);
#else
- return mount_ns(fs_type, flags, data, get_exec_env(), ramfs_fill_super);
+ return mount_ns(fs_type, flags, data, ramfs_fill_super);
#endif
}
diff --git a/fs/binfmt_misc.c b/fs/binfmt_misc.c
index 460d53f..7e760d2 100644
--- a/fs/binfmt_misc.c
+++ b/fs/binfmt_misc.c
@@ -734,7 +734,7 @@ static int bm_fill_super(struct super_block * sb, void * data, int silent)
static struct dentry *bm_mount(struct file_system_type *fs_type,
int flags, const char *dev_name, void *data)
{
- return mount_ns(fs_type, flags, data, get_exec_env(), bm_fill_super);
+ return mount_ns(fs_type, flags, get_exec_env(), bm_fill_super);
}
static struct linux_binfmt misc_format = {
diff --git a/fs/nfsd/nfsctl.c b/fs/nfsd/nfsctl.c
index 9b690c9..7411a56 100644
--- a/fs/nfsd/nfsctl.c
+++ b/fs/nfsd/nfsctl.c
@@ -1126,7 +1126,7 @@ static int nfsd_fill_super(struct super_block * sb, void * data, int silent)
static struct dentry *nfsd_mount(struct file_system_type *fs_type,
int flags, const char *dev_name, void *data)
{
- return mount_ns(fs_type, flags, NULL, current->nsproxy->net_ns, nfsd_fill_super);
+ return mount_ns(fs_type, flags, current->nsproxy->net_ns, nfsd_fill_super);
}
static void nfsd_umount(struct super_block *sb)
diff --git a/fs/super.c b/fs/super.c
index 7f316e8..c9b47bf 100644
--- a/fs/super.c
+++ b/fs/super.c
@@ -890,11 +890,11 @@ static int ns_set_super(struct super_block *sb, void *data)
}
struct dentry *mount_ns(struct file_system_type *fs_type, int flags,
- void *data, void *ns, int (*fill_super)(struct super_block *, void *, int))
+ void *data, int (*fill_super)(struct super_block *, void *, int))
{
struct super_block *sb;
- sb = sget(fs_type, ns_test_super, ns_set_super, flags, ns);
+ sb = sget(fs_type, ns_test_super, ns_set_super, flags, data);
if (IS_ERR(sb))
return ERR_CAST(sb);
diff --git a/include/linux/fs.h b/include/linux/fs.h
index 3a2b604..68cec28 100644
--- a/include/linux/fs.h
+++ b/include/linux/fs.h
@@ -2093,7 +2093,7 @@ struct file_system_type {
#define MODULE_ALIAS_FS(NAME) MODULE_ALIAS("fs-" NAME)
extern struct dentry *mount_ns(struct file_system_type *fs_type, int flags,
- void *data, void *ns, int (*fill_super)(struct super_block *, void *, int));
+ void *data, int (*fill_super)(struct super_block *, void *, int));
extern struct dentry *mount_bdev(struct file_system_type *fs_type,
int flags, const char *dev_name, void *data,
int (*fill_super)(struct super_block *, void *, int));
diff --git a/ipc/mqueue.c b/ipc/mqueue.c
index c5f1d3e..18620cd 100644
--- a/ipc/mqueue.c
+++ b/ipc/mqueue.c
@@ -341,7 +341,7 @@ static struct dentry *mqueue_mount(struct file_system_type *fs_type,
data = ns;
}
- return mount_ns(fs_type, flags, NULL, data, mqueue_fill_super);
+ return mount_ns(fs_type, flags, data, mqueue_fill_super);
}
static void init_once(void *foo)
diff --git a/net/sunrpc/rpc_pipe.c b/net/sunrpc/rpc_pipe.c
index 7d4e81a..875f9c7 100644
--- a/net/sunrpc/rpc_pipe.c
+++ b/net/sunrpc/rpc_pipe.c
@@ -1457,7 +1457,7 @@ static struct dentry *
rpc_mount(struct file_system_type *fs_type,
int flags, const char *dev_name, void *data)
{
- return mount_ns(fs_type, flags, NULL, current->nsproxy->net_ns, rpc_fill_super);
+ return mount_ns(fs_type, flags, current->nsproxy->net_ns, rpc_fill_super);
}
static void rpc_kill_sb(struct super_block *sb)
More information about the Devel
mailing list