diff options
author | Stanislav Kinsbursky <skinsbursky@parallels.com> | 2013-02-01 15:56:12 +0300 |
---|---|---|
committer | J. Bruce Fields <bfields@redhat.com> | 2013-02-15 11:21:00 -0500 |
commit | 11f779421a39b86da8a523d97e5fd3477878d44f (patch) | |
tree | 5a2c01f75d57a1ff23dd0ecec56a378e2b34bb8d /fs/nfsd/nfssvc.c | |
parent | 1ac8362977b9ec75779170ac3074c7b36ab19b82 (diff) | |
download | op-kernel-dev-11f779421a39b86da8a523d97e5fd3477878d44f.zip op-kernel-dev-11f779421a39b86da8a523d97e5fd3477878d44f.tar.gz |
nfsd: containerize NFSd filesystem
This patch makes NFSD file system superblock to be created per net.
This makes possible to get proper network namespace from superblock instead of
using hard-coded "init_net".
Note: NFSd fs super-block holds network namespace. This garantees, that
network namespace won't disappear from underneath of it.
This, obviously, means, that in case of kill of a container's "init" (which is not a mount
namespace, but network namespace creator) netowrk namespace won't be
destroyed.
Signed-off-by: Stanislav Kinsbursky <skinsbursky@parallels.com>
Signed-off-by: J. Bruce Fields <bfields@redhat.com>
Diffstat (limited to 'fs/nfsd/nfssvc.c')
-rw-r--r-- | fs/nfsd/nfssvc.c | 5 |
1 files changed, 2 insertions, 3 deletions
diff --git a/fs/nfsd/nfssvc.c b/fs/nfsd/nfssvc.c index 40cb1cb..6cee5db 100644 --- a/fs/nfsd/nfssvc.c +++ b/fs/nfsd/nfssvc.c @@ -702,8 +702,7 @@ nfsd_dispatch(struct svc_rqst *rqstp, __be32 *statp) int nfsd_pool_stats_open(struct inode *inode, struct file *file) { int ret; - struct net *net = &init_net; - struct nfsd_net *nn = net_generic(net, nfsd_net_id); + struct nfsd_net *nn = net_generic(inode->i_sb->s_fs_info, nfsd_net_id); mutex_lock(&nfsd_mutex); if (nn->nfsd_serv == NULL) { @@ -720,7 +719,7 @@ int nfsd_pool_stats_open(struct inode *inode, struct file *file) int nfsd_pool_stats_release(struct inode *inode, struct file *file) { int ret = seq_release(inode, file); - struct net *net = &init_net; + struct net *net = inode->i_sb->s_fs_info; mutex_lock(&nfsd_mutex); /* this function really, really should have been called svc_put() */ |