OpenVZ Forum - RDF feed
type: channel
items: [PATCH 0/5] SUNRPC: make caches network namespace aware
items: [PATCH 1/5] SUNRPC: cache creation and destruction routines introduced
items: [PATCH 2/5] SUNRPC: create unix gid cache per network namespace
items: [PATCH 3/5] SUNRPC: create GSS auth cache per network namespace
items: [PATCH 4/5] SUNRPC: ip map cache per network namespace cleanup
items: [PATCH 5/5] SUNRPC: generic cache register routines removed
items: Re: [PATCH 0/5] SUNRPC: make caches network namespace aware
items: RE: [PATCH 0/5] SUNRPC: make caches network namespace aware
items: Re: [PATCH 2/5] SUNRPC: create unix gid cache per network namespace
items: Re: [PATCH 3/5] SUNRPC: create GSS auth cache per network namespace
items: Re: [PATCH 4/5] SUNRPC: ip map cache per network namespace cleanup

[PATCH 0/5] SUNRPC: make caches network namespace aware
type: item
description: One more step towards to "NFS in container". With this patch set caches are allocated per network namespace. The following series consists of: --- Stanislav Kinsbursky (5): SUNRPC: cache creation and destruction routines introduced SUNRPC: create unix gid cache per network namespace SUNRPC: create GSS auth cache per network namespace SUNRPC: ip map cache per network namespace cleanup SUNRPC: generic cache register routines removed include/linux/sunrpc/cache.h | 6 + include/linux/sunrpc/svcauth_gss.h | 2 net/sunrpc/auth_gss/auth_gss.c | 21 +++++ net/sunrpc/auth_gss/svcauth_gss.c | 161 +++++++++++++++++++++++++----------- net/sunrpc/cache.c | 34 ++++++-- net/sunrpc/netns.h | 3 + net/sunrpc/sunrpc_syms.c | 15 ++- net/sunrpc/svcauth_unix.c | 107 ++++++++++++++---------- 8 files changed, 240 insertions(+), 109 deletions(-)
creator: Stanislav Kinsbursky
date: 2012-01-19T14:48:56-00:00

[PATCH 1/5] SUNRPC: cache creation and destruction routines introduced
type: item
description: This patch prepares infrastructure for network namespace aware cache detail allocation. One note about adding network namespace link to cache structure. It's going to be used later in NFS DNS cache parsing routine (nfs_dns_parse for rpc_pton() call). Signed-off-by: Stanislav Kinsbursky <skinsbursky@parallels.com> --- include/linux/sunrpc/cache.h | 4 ++++ net/sunrpc/cache.c | 26 ++++++++++++++++++++++++++ 2 files changed, 30 insertions(+), 0 deletions(-) diff --git a/include/linux/sunrpc/cache.h b/include/linux/sunrpc/cache.h index 590a8ab..259381c 100644 --- a/include/linux/sunrpc/cache.h +++ b/include/linux/sunrpc/cache.h @@ -117,6 +117,7 @@ struct cache_detail { struct cache_detail_procfs procfs; struct cache_detail_pipefs pipefs; } u; + struct net *net; }; @@ -202,6 +203,9 @@ extern int cache_register_net(struct cache_detail *cd, struct net *net); extern void cache_unregister(struct cache_detail *cd); extern void cache_unregister_net(struct cache_detail *cd, struct net *net); +extern struct cache_detail *cache_create_net(struct cache_detail *tmpl, struct net *net); +extern void cache_destroy_net(struct cache_detail *cd, struct net *net); + extern void sunrpc_init_cache_detail(struct cache_detail *cd); extern void sunrpc_destroy_cache_detail(struct cache_detail *cd); extern int sunrpc_cache_register_pipefs(struct dentry *parent, const char *, diff --git a/net/sunrpc/cache.c b/net/sunrpc/cache.c index f128154..9ef5926 100644 --- a/net/sunrpc/cache.c +++ b/net/sunrpc/cache.c @@ -1662,6 +1662,32 @@ void cache_unregister(struct cache_detail *cd) } EXPORT_SYMBOL_GPL(cache_unregister); +struct cache_detail *cache_create_net(struct cache_detail *tmpl, struct net *net) +{ + struct cache_detail *cd; + + cd = kmemdup(tmpl, sizeof(struct cache_detail), GFP_KERNEL); + if (cd == NULL) + return ERR_PTR(-ENOMEM); + + cd->hash_table = kzalloc(cd->hash_size * sizeof(struct cache_head *), + GFP_KERNEL); + if (cd->hash_table == NULL) { + kfree(cd); + return ERR_PTR(-ENOMEM); + } + c…
creator: Stanislav Kinsbursky
date: 2012-01-19T14:49:06-00:00

[PATCH 2/5] SUNRPC: create unix gid cache per network namespace
type: item
description: This patch makes unix_gid_cache cache detail allocated and registered per network namespace context. Thus with this patch unix_gid_cache contents for network namespace "X" are controlled from proc file system mount for the same network namespace "X". Signed-off-by: Stanislav Kinsbursky <skinsbursky@parallels.com> --- net/sunrpc/netns.h | 1 + net/sunrpc/sunrpc_syms.c | 14 ++++++++++---- net/sunrpc/svcauth_unix.c | 36 +++++++++++++++++++++++++++++++----- 3 files changed, 42 insertions(+), 9 deletions(-) diff --git a/net/sunrpc/netns.h b/net/sunrpc/netns.h index 1fdeb1b..309f88d 100644 --- a/net/sunrpc/netns.h +++ b/net/sunrpc/netns.h @@ -9,6 +9,7 @@ struct cache_detail; struct sunrpc_net { struct proc_dir_entry *proc_net_rpc; struct cache_detail *ip_map_cache; + struct cache_detail *unix_gid_cache; struct super_block *pipefs_sb; struct mutex pipefs_sb_lock; diff --git a/net/sunrpc/sunrpc_syms.c b/net/sunrpc/sunrpc_syms.c index b4217dc..38a72a1 100644 --- a/net/sunrpc/sunrpc_syms.c +++ b/net/sunrpc/sunrpc_syms.c @@ -26,6 +26,9 @@ int sunrpc_net_id; +extern int unix_gid_cache_create(struct net *net); +extern int unix_gid_cache_destroy(struct net *net); + static __net_init int sunrpc_init_net(struct net *net) { int err; @@ -39,11 +42,17 @@ static __net_init int sunrpc_init_net(struct net *net) if (err) goto err_ipmap; + err = unix_gid_cache_create(net); + if (err) + goto err_unixgid; + rpc_pipefs_init_net(net); INIT_LIST_HEAD(&sn->all_clients); spin_lock_init(&sn->rpc_client_lock); return 0; +err_unixgid: + ip_map_cache_destroy(net); err_ipmap: rpc_proc_exit(net); err_proc: @@ -52,6 +61,7 @@ err_proc: static __net_exit void sunrpc_exit_net(struct net *net) { + unix_gid_cache_destroy(net); ip_map_cache_destroy(net); rpc_proc_exit(net); } @@ -63,8 +73,6 @@ static struct pernet_operations sunrpc_net_ops = { .size = sizeof(struct sunrpc_net), }; -extern struct cache_detail unix_gid_cache; - static int __init init_sunrpc(void) { @@ -86,7 +94,6 @@ init_sunrpc(void) #ifdef RPC_…
creator: Stanislav Kinsbursky
date: 2012-01-19T14:49:14-00:00

[PATCH 3/5] SUNRPC: create GSS auth cache per network namespace
type: item
description: This patch makes GSS auth cache details allocated and registered per network namespace context. Thus with this patch rsi_cache and rsc_cache contents for network namespace "X" are controlled from proc file system mount for the same network namespace "X". Signed-off-by: Stanislav Kinsbursky <skinsbursky@parallels.com> --- include/linux/sunrpc/svcauth_gss.h | 2 net/sunrpc/auth_gss/auth_gss.c | 21 +++++ net/sunrpc/auth_gss/svcauth_gss.c | 161 +++++++++++++++++++++++++----------- net/sunrpc/cache.c | 2 net/sunrpc/netns.h | 2 net/sunrpc/sunrpc_syms.c | 1 6 files changed, 141 insertions(+), 48 deletions(-) diff --git a/include/linux/sunrpc/svcauth_gss.h b/include/linux/sunrpc/svcauth_gss.h index 83bbee3..7c32daa 100644 --- a/include/linux/sunrpc/svcauth_gss.h +++ b/include/linux/sunrpc/svcauth_gss.h @@ -18,6 +18,8 @@ int gss_svc_init(void); void gss_svc_shutdown(void); +int gss_svc_init_net(struct net *net); +void gss_svc_shutdown_net(struct net *net); int svcauth_gss_register_pseudoflavor(u32 pseudoflavor, char * name); u32 svcauth_gss_flavor(struct auth_domain *dom); char *svc_gss_principal(struct svc_rqst *); diff --git a/net/sunrpc/auth_gss/auth_gss.c b/net/sunrpc/auth_gss/auth_gss.c index 9ef7fa3..5e02207 100644 --- a/net/sunrpc/auth_gss/auth_gss.c +++ b/net/sunrpc/auth_gss/auth_gss.c @@ -1662,6 +1662,21 @@ static const struct rpc_pipe_ops gss_upcall_ops_v1 = { .release_pipe = gss_pipe_release, }; +static __net_init int rpcsec_gss_init_net(struct net *net) +{ + return gss_svc_init_net(net); +} + +static __net_exit void rpcsec_gss_exit_net(struct net *net) +{ + gss_svc_shutdown_net(net); +} + +static struct pernet_operations rpcsec_gss_net_ops = { + .init = rpcsec_gss_init_net, + .exit = rpcsec_gss_exit_net, +}; + /* * Initialize RPCSEC_GSS module */ @@ -1675,8 +1690,13 @@ static int __init init_rpcsec_gss(void) err = gss_svc_init(); if (err) goto out_unregister; + err = register_pernet_subsys(&rpcsec_gss_net_ops); + if (err) + goto out_svc_exit; rpc_init_wait_queue(&…
creator: Stanislav Kinsbursky
date: 2012-01-19T14:49:23-00:00

[PATCH 4/5] SUNRPC: ip map cache per network namespace cleanup
type: item
description: This patch converts ip_map_cache per network namespace implemenetation to the same view, as other caches done in the series. Besides generalization, code becomes shorter with this patch. Signed-off-by: Stanislav Kinsbursky <skinsbursky@parallels.com> --- net/sunrpc/svcauth_unix.c | 71 +++++++++++++++++++-------------------------- 1 files changed, 30 insertions(+), 41 deletions(-) diff --git a/net/sunrpc/svcauth_unix.c b/net/sunrpc/svcauth_unix.c index c753ae4..0a50788 100644 --- a/net/sunrpc/svcauth_unix.c +++ b/net/sunrpc/svcauth_unix.c @@ -211,7 +211,7 @@ static int ip_map_parse(struct cache_detail *cd, len = qword_get(&mesg, buf, mlen); if (len <= 0) return -EINVAL; - if (rpc_pton(&init_net, buf, len, &address.sa, sizeof(address)) == 0) + if (rpc_pton(cd->net, buf, len, &address.sa, sizeof(address)) == 0) return -EINVAL; switch (address.sa.sa_family) { case AF_INET: @@ -875,56 +875,45 @@ struct auth_ops svcauth_unix = { .set_client = svcauth_unix_set_client, }; +struct cache_detail ip_map_cache = { + .owner = THIS_MODULE, + .hash_size = IP_HASHMAX, + .name = "auth.unix.ip", + .cache_put = ip_map_put, + .cache_upcall = ip_map_upcall, + .cache_parse = ip_map_parse, + .cache_show = ip_map_show, + .match = ip_map_match, + .init = ip_map_init, + .update = update, + .alloc = ip_map_alloc, +}; + int ip_map_cache_create(struct net *net) { - int err = -ENOMEM; - struct cache_detail *cd; - struct cache_head **tbl; struct sunrpc_net *sn = net_generic(net, sunrpc_net_id); + struct cache_detail *cd; + int err; - cd = kzalloc(sizeof(struct cache_detail), GFP_KERNEL); - if (cd == NULL) - goto err_cd; - - tbl = kzalloc(IP_HASHMAX * sizeof(struct cache_head *), GFP_KERNEL); - if (tbl == NULL) - goto err_tbl; - - cd->owner = THIS_MODULE, - cd->hash_size = IP_HASHMAX, - cd->hash_table = tbl, - cd->name = "auth.unix.ip", - cd->cache_put = ip_map_put, - cd->cache_upcall = ip_map_upcall, - cd->cache_parse = ip_map_parse, - cd->cache_show = ip_map_show, - cd->match = ip_map_match, - cd…
creator: Stanislav Kinsbursky
date: 2012-01-19T14:49:31-00:00

[PATCH 5/5] SUNRPC: generic cache register routines removed
type: item
description: All cache users now uses network-namespace-aware routines, so generic ones are obsolete. Signed-off-by: Stanislav Kinsbursky <skinsbursky@parallels.com> --- include/linux/sunrpc/cache.h | 2 -- net/sunrpc/cache.c | 12 ------------ 2 files changed, 0 insertions(+), 14 deletions(-) diff --git a/include/linux/sunrpc/cache.h b/include/linux/sunrpc/cache.h index 259381c..f5fd616 100644 --- a/include/linux/sunrpc/cache.h +++ b/include/linux/sunrpc/cache.h @@ -198,9 +198,7 @@ extern void cache_flush(void); extern void cache_purge(struct cache_detail *detail); #define NEVER (0x7FFFFFFF) extern void __init cache_initialize(void); -extern int cache_register(struct cache_detail *cd); extern int cache_register_net(struct cache_detail *cd, struct net *net); -extern void cache_unregister(struct cache_detail *cd); extern void cache_unregister_net(struct cache_detail *cd, struct net *net); extern struct cache_detail *cache_create_net(struct cache_detail *tmpl, struct net *net); diff --git a/net/sunrpc/cache.c b/net/sunrpc/cache.c index a450b8a..f21ece0 100644 --- a/net/sunrpc/cache.c +++ b/net/sunrpc/cache.c @@ -1645,12 +1645,6 @@ int cache_register_net(struct cache_detail *cd, struct net *net) } EXPORT_SYMBOL_GPL(cache_register_net); -int cache_register(struct cache_detail *cd) -{ - return cache_register_net(cd, &init_net); -} -EXPORT_SYMBOL_GPL(cache_register); - void cache_unregister_net(struct cache_detail *cd, struct net *net) { remove_cache_proc_entries(cd, net); @@ -1658,12 +1652,6 @@ void cache_unregister_net(struct cache_detail *cd, struct net *net) } EXPORT_SYMBOL_GPL(cache_unregister_net); -void cache_unregister(struct cache_detail *cd) -{ - cache_unregister_net(cd, &init_net); -} -EXPORT_SYMBOL_GPL(cache_unregister); - struct cache_detail *cache_create_net(struct cache_detail *tmpl, struct net *net) { struct cache_detail *cd;
creator: Stanislav Kinsbursky
date: 2012-01-19T14:49:39-00:00

Re: [PATCH 0/5] SUNRPC: make caches network namespace aware
type: item
description: On Thu, 2012-01-19 at 18:48 +0400, Stanislav Kinsbursky wrote: > One more step towards to "NFS in container". > With this patch set caches are allocated per network namespace. > > The following series consists of: > > --- > > Stanislav Kinsbursky (5): > SUNRPC: cache creation and destruction routines introduced > SUNRPC: create unix gid cache per network namespace > SUNRPC: create GSS auth cache per network namespace > SUNRPC: ip map cache per network namespace cleanup > SUNRPC: generic cache register routines removed The patches look good, and I've applied them for now in my 'devel' branch so we can test them, but I'd like to get an Ack/Nack from Bruce before committing to merging them. -- Trond Myklebust Linux NFS client maintainer NetApp Trond.Myklebust@netapp.com www.netapp.com
creator: Myklebust, Trond
date: 2012-01-19T15:19:52-00:00

Re: [PATCH 0/5] SUNRPC: make caches network namespace aware
type: item
description: 19.01.2012 19:19, Trond Myklebust пишет: > On Thu, 2012-01-19 at 18:48 +0400, Stanislav Kinsbursky wrote: >> One more step towards to "NFS in container". >> With this patch set caches are allocated per network namespace. >> >> The following series consists of: >> >> --- >> >> Stanislav Kinsbursky (5): >> SUNRPC: cache creation and destruction routines introduced >> SUNRPC: create unix gid cache per network namespace >> SUNRPC: create GSS auth cache per network namespace >> SUNRPC: ip map cache per network namespace cleanup >> SUNRPC: generic cache register routines removed > > The patches look good, and I've applied them for now in my 'devel' > branch so we can test them, but I'd like to get an Ack/Nack from Bruce > before committing to merging them. > Cool, thanks. BTW, these patches depends on patch "NFSd: use network-namespace-aware cache registering routines", which Bruce took already (and it's even in linux-next already), but not in your devel tree for some reason. -- Best regards, Stanislav Kinsbursky
creator: Stanislav Kinsbursky
date: 2012-01-19T15:31:56-00:00

RE: [PATCH 0/5] SUNRPC: make caches network namespace aware
type: item
description: > -----Original Message----- > From: Stanislav Kinsbursky [mailto:skinsbursky@parallels.com] > Sent: Thursday, January 19, 2012 10:32 AM > To: Myklebust, Trond > Cc: Dr James Bruce Fields; linux-nfs@vger.kernel.org; Pavel Emelianov; > neilb@suse.de; netdev@vger.kernel.org; linux-kernel@vger.kernel.org; > James Bottomley; bfields@fieldses.org; davem@davemloft.net; > devel@openvz.org > Subject: Re: [PATCH 0/5] SUNRPC: make caches network namespace aware > > 19.01.2012 19:19, Trond Myklebust пишет: > > On Thu, 2012-01-19 at 18:48 +0400, Stanislav Kinsbursky wrote: > >> One more step towards to "NFS in container". > >> With this patch set caches are allocated per network namespace. > >> > >> The following series consists of: > >> > >> --- > >> > >> Stanislav Kinsbursky (5): > >> SUNRPC: cache creation and destruction routines introduced > >> SUNRPC: create unix gid cache per network namespace > >> SUNRPC: create GSS auth cache per network namespace > >> SUNRPC: ip map cache per network namespace cleanup > >> SUNRPC: generic cache register routines removed > > > > The patches look good, and I've applied them for now in my 'devel' > > branch so we can test them, but I'd like to get an Ack/Nack from Bruce > > before committing to merging them. > > > > Cool, thanks. > BTW, these patches depends on patch "NFSd: use network-namespace- > aware cache registering routines", which Bruce took already (and it's even in > linux-next already), but not in your devel tree for some reason. In that case, would it make more sense to carry them in Bruce's tree? -- Trond Myklebust Linux NFS client maintainer NetApp Trond.Myklebust@netapp.com www.netapp.com
creator: Myklebust, Trond
date: 2012-01-19T15:34:02-00:00

Re: [PATCH 0/5] SUNRPC: make caches network namespace aware
type: item
description: 19.01.2012 19:34, Myklebust, Trond пишет: >> -----Original Message----- >> From: Stanislav Kinsbursky [mailto:skinsbursky@parallels.com] >> Sent: Thursday, January 19, 2012 10:32 AM >> To: Myklebust, Trond >> Cc: Dr James Bruce Fields; linux-nfs@vger.kernel.org; Pavel Emelianov; >> neilb@suse.de; netdev@vger.kernel.org; linux-kernel@vger.kernel.org; >> James Bottomley; bfields@fieldses.org; davem@davemloft.net; >> devel@openvz.org >> Subject: Re: [PATCH 0/5] SUNRPC: make caches network namespace aware >> >> 19.01.2012 19:19, Trond Myklebust пишет: >>> On Thu, 2012-01-19 at 18:48 +0400, Stanislav Kinsbursky wrote: >>>> One more step towards to "NFS in container". >>>> With this patch set caches are allocated per network namespace. >>>> >>>> The following series consists of: >>>> >>>> --- >>>> >>>> Stanislav Kinsbursky (5): >>>> SUNRPC: cache creation and destruction routines introduced >>>> SUNRPC: create unix gid cache per network namespace >>>> SUNRPC: create GSS auth cache per network namespace >>>> SUNRPC: ip map cache per network namespace cleanup >>>> SUNRPC: generic cache register routines removed >>> >>> The patches look good, and I've applied them for now in my 'devel' >>> branch so we can test them, but I'd like to get an Ack/Nack from Bruce >>> before committing to merging them. >>> >> >> Cool, thanks. >> BTW, these patches depends on patch "NFSd: use network-namespace- >> aware cache registering routines", which Bruce took already (and it's even in >> linux-next already), but not in your devel tree for some reason. > > In that case, would it make more sense to carry them in Bruce's tree? > It's up to you, of course. But, frankly, I don't think so. To be more precise, only the last patch ("SUNRPC: generic cache register routines removed") depends on the patch, which is in linux-next already. IOW, those patch removed NFSd dependence on cache_register() and cache_unregister() routines and was commited to linux-next at Wed, 7 Dec 2011. -- Best regards, Stanis…
creator: Stanislav Kinsbursky
date: 2012-01-19T15:43:22-00:00

Re: [PATCH 0/5] SUNRPC: make caches network namespace aware
type: item
description: On Thu, Jan 19, 2012 at 07:31:56PM +0400, Stanislav Kinsbursky wrote: > 19.01.2012 19:19, Trond Myklebust пишет: > >On Thu, 2012-01-19 at 18:48 +0400, Stanislav Kinsbursky wrote: > >>One more step towards to "NFS in container". > >>With this patch set caches are allocated per network namespace. > >> > >>The following series consists of: > >> > >>--- > >> > >>Stanislav Kinsbursky (5): > >> SUNRPC: cache creation and destruction routines introduced > >> SUNRPC: create unix gid cache per network namespace > >> SUNRPC: create GSS auth cache per network namespace > >> SUNRPC: ip map cache per network namespace cleanup > >> SUNRPC: generic cache register routines removed > > > >The patches look good, and I've applied them for now in my 'devel' > >branch so we can test them, but I'd like to get an Ack/Nack from Bruce > >before committing to merging them. > > > > Cool, thanks. > BTW, these patches depends on patch "NFSd: use > network-namespace-aware cache registering routines", which Bruce > took already (and it's even in linux-next already), but not in your > devel tree for some reason. And Linus has pulled those, so if Trond bases his tree on -rc1, he'll have "NFSd: use network-namespace-aware cache registering routines". You know best what you're planning to submit over the next cycle, and what the dependencies are, and which side (client or server) it's likely to touch more. So, your choice, I think. If necessary Trond and I can probably do a merge between us at some point. Either way, I'll go take a look at them now....--b. --b.
creator: bfields
date: 2012-01-19T15:47:31-00:00

Re: [PATCH 0/5] SUNRPC: make caches network namespace aware
type: item
description: 19.01.2012 19:47, bfields@fieldses.org пишет: > On Thu, Jan 19, 2012 at 07:31:56PM +0400, Stanislav Kinsbursky wrote: >> 19.01.2012 19:19, Trond Myklebust пишет: >>> On Thu, 2012-01-19 at 18:48 +0400, Stanislav Kinsbursky wrote: >>>> One more step towards to "NFS in container". >>>> With this patch set caches are allocated per network namespace. >>>> >>>> The following series consists of: >>>> >>>> --- >>>> >>>> Stanislav Kinsbursky (5): >>>> SUNRPC: cache creation and destruction routines introduced >>>> SUNRPC: create unix gid cache per network namespace >>>> SUNRPC: create GSS auth cache per network namespace >>>> SUNRPC: ip map cache per network namespace cleanup >>>> SUNRPC: generic cache register routines removed >>> >>> The patches look good, and I've applied them for now in my 'devel' >>> branch so we can test them, but I'd like to get an Ack/Nack from Bruce >>> before committing to merging them. >>> >> >> Cool, thanks. >> BTW, these patches depends on patch "NFSd: use >> network-namespace-aware cache registering routines", which Bruce >> took already (and it's even in linux-next already), but not in your >> devel tree for some reason. > > And Linus has pulled those, so if Trond bases his tree on -rc1, he'll > have "NFSd: use network-namespace-aware cache registering routines". > > You know best what you're planning to submit over the next cycle, and > what the dependencies are, and which side (client or server) it's likely > to touch more. So, your choice, I think. If necessary Trond and I can > probably do a merge between us at some point. > Actually, I'm not going to patch NFSd in this cycle. Some more NFS and Lockd patches will follow soon. So, probably, Trond's tree suits better. -- Best regards, Stanislav Kinsbursky
creator: Stanislav Kinsbursky
date: 2012-01-19T16:01:33-00:00

Re: [PATCH 2/5] SUNRPC: create unix gid cache per network namespace
type: item
description: On Thu, Jan 19, 2012 at 06:49:14PM +0400, Stanislav Kinsbursky wrote: > This patch makes unix_gid_cache cache detail allocated and registered per > network namespace context. > Thus with this patch unix_gid_cache contents for network namespace "X" are > controlled from proc file system mount for the same network namespace "X". I'm confused--this seems half-done. I see that you're creating the gid caches dynamically, but there's still this static definition: > struct cache_detail unix_gid_cache = { > .owner = THIS_MODULE, > .hash_size = GID_HASHMAX, > - .hash_table = gid_table, > .name = "auth.unix.gid", > .cache_put = unix_gid_put, > .cache_upcall = unix_gid_upcall, And it looks like unix_gid_lookup is still using this static unix_gid_cache. Maybe I'm missing something.... --b.
creator: bfields
date: 2012-01-19T16:24:31-00:00

Re: [PATCH 3/5] SUNRPC: create GSS auth cache per network namespace
type: item
description: On Thu, Jan 19, 2012 at 06:49:23PM +0400, Stanislav Kinsbursky wrote: > @@ -1000,6 +996,7 @@ static int svcauth_gss_handle_init(struct svc_rqst *rqstp, > struct xdr_netobj tmpobj; > struct rsi *rsip, rsikey; > int ret; > + struct sunrpc_net *sn = net_generic(rqstp->rq_xprt->xpt_net, sunrpc_net_id); OK, so you're getting the network namespace out of the rqstp, and, then passing it down, makes sense. And: > @@ -1079,6 +1076,7 @@ svcauth_gss_accept(struct svc_rqst *rqstp, __be32 *authp) > __be32 *rpcstart; > __be32 *reject_stat = resv->iov_base + resv->iov_len; > int ret; > + struct sunrpc_net *sn = net_generic(rqstp->rq_xprt->xpt_net, sunrpc_net_id); ... same for the gss cache. Looks good. How do you plan to test this? --b.
creator: bfields
date: 2012-01-19T16:31:49-00:00

Re: [PATCH 4/5] SUNRPC: ip map cache per network namespace cleanup
type: item
description: On Thu, Jan 19, 2012 at 06:49:31PM +0400, Stanislav Kinsbursky wrote: > This patch converts ip_map_cache per network namespace implemenetation to the > same view, as other caches done in the series. > Besides generalization, code becomes shorter with this patch. Again, isnt' it ip_map_cache, and not one of the dynamically created cache details, that's being passed to the lookup routines? I may just be confused.... --b. > > Signed-off-by: Stanislav Kinsbursky <skinsbursky@parallels.com> > > --- > net/sunrpc/svcauth_unix.c | 71 +++++++++++++++++++-------------------------- > 1 files changed, 30 insertions(+), 41 deletions(-) > > diff --git a/net/sunrpc/svcauth_unix.c b/net/sunrpc/svcauth_unix.c > index c753ae4..0a50788 100644 > --- a/net/sunrpc/svcauth_unix.c > +++ b/net/sunrpc/svcauth_unix.c > @@ -211,7 +211,7 @@ static int ip_map_parse(struct cache_detail *cd, > len = qword_get(&mesg, buf, mlen); > if (len <= 0) return -EINVAL; > > - if (rpc_pton(&init_net, buf, len, &address.sa, sizeof(address)) == 0) > + if (rpc_pton(cd->net, buf, len, &address.sa, sizeof(address)) == 0) > return -EINVAL; > switch (address.sa.sa_family) { > case AF_INET: > @@ -875,56 +875,45 @@ struct auth_ops svcauth_unix = { > .set_client = svcauth_unix_set_client, > }; > > +struct cache_detail ip_map_cache = { > + .owner = THIS_MODULE, > + .hash_size = IP_HASHMAX, > + .name = "auth.unix.ip", > + .cache_put = ip_map_put, > + .cache_upcall = ip_map_upcall, > + .cache_parse = ip_map_parse, > + .cache_show = ip_map_show, > + .match = ip_map_match, > + .init = ip_map_init, > + .update = update, > + .alloc = ip_map_alloc, > +}; > + > int ip_map_cache_create(struct net *net) > { > - int err = -ENOMEM; > - struct cache_detail *cd; > - struct cache_head **tbl; > struct sunrpc_net *sn = net_generic(net, sunrpc_net_id); > + struct cache_detail *cd; > + int err; > > - cd = kzalloc(sizeof(struct cache_detail), GFP_KERNEL); > - if (cd == NULL) > - goto err_cd; > - > - tbl = kzalloc(IP_HASHMAX * sizeof(struct…
creator: bfields
date: 2012-01-19T16:37:22-00:00

Re: [PATCH 2/5] SUNRPC: create unix gid cache per network namespace
type: item
description: 19.01.2012 20:24, J. Bruce Fields пишет: > On Thu, Jan 19, 2012 at 06:49:14PM +0400, Stanislav Kinsbursky wrote: >> This patch makes unix_gid_cache cache detail allocated and registered per >> network namespace context. >> Thus with this patch unix_gid_cache contents for network namespace "X" are >> controlled from proc file system mount for the same network namespace "X". > > I'm confused--this seems half-done. I see that you're creating the gid > caches dynamically, but there's still this static definition: > This static definition is used as a template now. Have a look at the first path of the series: cache creation routine duplicates incomming cache_detail and initializes net and hash_table fields in freshly created copy. This copy is the new per-net cache_detail instance. >> struct cache_detail unix_gid_cache = { >> .owner = THIS_MODULE, >> .hash_size = GID_HASHMAX, >> - .hash_table = gid_table, >> .name = "auth.unix.gid", >> .cache_put = unix_gid_put, >> .cache_upcall = unix_gid_upcall, > > And it looks like unix_gid_lookup is still using this static > unix_gid_cache. Maybe I'm missing something.... > Yep, thanks for the catch. My fault, I've missed this usage. -- Best regards, Stanislav Kinsbursky
creator: Stanislav Kinsbursky
date: 2012-01-19T17:00:23-00:00

Re: [PATCH 3/5] SUNRPC: create GSS auth cache per network namespace
type: item
description: 19.01.2012 20:31, J. Bruce Fields пишет: > On Thu, Jan 19, 2012 at 06:49:23PM +0400, Stanislav Kinsbursky wrote: >> @@ -1000,6 +996,7 @@ static int svcauth_gss_handle_init(struct svc_rqst *rqstp, >> struct xdr_netobj tmpobj; >> struct rsi *rsip, rsikey; >> int ret; >> + struct sunrpc_net *sn = net_generic(rqstp->rq_xprt->xpt_net, sunrpc_net_id); > > OK, so you're getting the network namespace out of the rqstp, and, then > passing it down, makes sense. And: > >> @@ -1079,6 +1076,7 @@ svcauth_gss_accept(struct svc_rqst *rqstp, __be32 *authp) >> __be32 *rpcstart; >> __be32 *reject_stat = resv->iov_base + resv->iov_len; >> int ret; >> + struct sunrpc_net *sn = net_generic(rqstp->rq_xprt->xpt_net, sunrpc_net_id); > > ... same for the gss cache. Looks good. > > How do you plan to test this? > Do you mean something special or in general? Currently I validate all my chages in container by using simple test environment. I would be appreciate for any hints to tests, than can help. -- Best regards, Stanislav Kinsbursky
creator: Stanislav Kinsbursky
date: 2012-01-19T17:04:40-00:00

Re: [PATCH 4/5] SUNRPC: ip map cache per network namespace cleanup
type: item
description: 19.01.2012 20:37, J. Bruce Fields пишет: > On Thu, Jan 19, 2012 at 06:49:31PM +0400, Stanislav Kinsbursky wrote: >> This patch converts ip_map_cache per network namespace implemenetation to the >> same view, as other caches done in the series. >> Besides generalization, code becomes shorter with this patch. > > Again, isnt' it ip_map_cache, and not one of the dynamically created > cache details, that's being passed to the lookup routines? > > I may just be confused.... > Nope. ip_map_cache was made per network namespace a long time ago. But it was done in other way: no static templates - just allocation and initialization. But static template looks clearer to me. So I've used this approach for other caches. And decided to update ip_map_cache management in the same way. -- Best regards, Stanislav Kinsbursky
creator: Stanislav Kinsbursky
date: 2012-01-19T17:10:08-00:00

Re: [PATCH 0/5] SUNRPC: make caches network namespace aware
type: item
description: Sorry, this patch set has some bugs. I'll resend fixed version soon. -- Best regards, Stanislav Kinsbursky
creator: Stanislav Kinsbursky
date: 2012-01-19T17:14:15-00:00

RE: [PATCH 0/5] SUNRPC: make caches network namespace aware
type: item
description: > -----Original Message----- > From: bfields@fieldses.org [mailto:bfields@fieldses.org] > Sent: Thursday, January 19, 2012 10:48 AM > To: Stanislav Kinsbursky > Cc: Myklebust, Trond; Dr James Bruce Fields; linux-nfs@vger.kernel.org; > Pavel Emelianov; neilb@suse.de; netdev@vger.kernel.org; linux- > kernel@vger.kernel.org; James Bottomley; davem@davemloft.net; > devel@openvz.org > Subject: Re: [PATCH 0/5] SUNRPC: make caches network namespace aware > > On Thu, Jan 19, 2012 at 07:31:56PM +0400, Stanislav Kinsbursky wrote: > > 19.01.2012 19:19, Trond Myklebust пишет: > > >On Thu, 2012-01-19 at 18:48 +0400, Stanislav Kinsbursky wrote: > > >>One more step towards to "NFS in container". > > >>With this patch set caches are allocated per network namespace. > > >> > > >>The following series consists of: > > >> > > >>--- > > >> > > >>Stanislav Kinsbursky (5): > > >> SUNRPC: cache creation and destruction routines introduced > > >> SUNRPC: create unix gid cache per network namespace > > >> SUNRPC: create GSS auth cache per network namespace > > >> SUNRPC: ip map cache per network namespace cleanup > > >> SUNRPC: generic cache register routines removed > > > > > >The patches look good, and I've applied them for now in my 'devel' > > >branch so we can test them, but I'd like to get an Ack/Nack from > > >Bruce before committing to merging them. > > > > > > > Cool, thanks. > > BTW, these patches depends on patch "NFSd: use network-namespace- > aware > > cache registering routines", which Bruce took already (and it's even > > in linux-next already), but not in your devel tree for some reason. > > And Linus has pulled those, so if Trond bases his tree on -rc1, he'll have > "NFSd: use network-namespace-aware cache registering routines". OK. In that case I should have them...
creator: Myklebust, Trond
date: 2012-01-19T17:34:11-00:00

Re: [PATCH 3/5] SUNRPC: create GSS auth cache per network namespace
type: item
description: On Thu, Jan 19, 2012 at 09:04:40PM +0400, Stanislav Kinsbursky wrote: > 19.01.2012 20:31, J. Bruce Fields пишет: > >On Thu, Jan 19, 2012 at 06:49:23PM +0400, Stanislav Kinsbursky wrote: > >>@@ -1000,6 +996,7 @@ static int svcauth_gss_handle_init(struct svc_rqst *rqstp, > >> struct xdr_netobj tmpobj; > >> struct rsi *rsip, rsikey; > >> int ret; > >>+ struct sunrpc_net *sn = net_generic(rqstp->rq_xprt->xpt_net, sunrpc_net_id); > > > >OK, so you're getting the network namespace out of the rqstp, and, then > >passing it down, makes sense. And: > > > >>@@ -1079,6 +1076,7 @@ svcauth_gss_accept(struct svc_rqst *rqstp, __be32 *authp) > >> __be32 *rpcstart; > >> __be32 *reject_stat = resv->iov_base + resv->iov_len; > >> int ret; > >>+ struct sunrpc_net *sn = net_generic(rqstp->rq_xprt->xpt_net, sunrpc_net_id); > > > >... same for the gss cache. Looks good. > > > >How do you plan to test this? > > > > Do you mean something special or in general? > Currently I validate all my chages in container by using simple test environment. > I would be appreciate for any hints to tests, than can help. The server needs to be tested after these changes, and we need to make sure the caches affected still work. (I suspect the gid cache code will oops if it's used after these patches, since the table is left NULl?) And then we should also test in a container environment, with different instances of mountd and rpc.svcidmapd running in each container, to verify that the right thing happens. --b.
creator: bfields
date: 2012-01-19T17:40:02-00:00

Re: [PATCH 3/5] SUNRPC: create GSS auth cache per network namespace
type: item
description: 19.01.2012 21:40, J. Bruce Fields пишет: > On Thu, Jan 19, 2012 at 09:04:40PM +0400, Stanislav Kinsbursky wrote: >> 19.01.2012 20:31, J. Bruce Fields пишет: >>> On Thu, Jan 19, 2012 at 06:49:23PM +0400, Stanislav Kinsbursky wrote: >>>> @@ -1000,6 +996,7 @@ static int svcauth_gss_handle_init(struct svc_rqst *rqstp, >>>> struct xdr_netobj tmpobj; >>>> struct rsi *rsip, rsikey; >>>> int ret; >>>> + struct sunrpc_net *sn = net_generic(rqstp->rq_xprt->xpt_net, sunrpc_net_id); >>> >>> OK, so you're getting the network namespace out of the rqstp, and, then >>> passing it down, makes sense. And: >>> >>>> @@ -1079,6 +1076,7 @@ svcauth_gss_accept(struct svc_rqst *rqstp, __be32 *authp) >>>> __be32 *rpcstart; >>>> __be32 *reject_stat = resv->iov_base + resv->iov_len; >>>> int ret; >>>> + struct sunrpc_net *sn = net_generic(rqstp->rq_xprt->xpt_net, sunrpc_net_id); >>> >>> ... same for the gss cache. Looks good. >>> >>> How do you plan to test this? >>> >> >> Do you mean something special or in general? >> Currently I validate all my chages in container by using simple test environment. >> I would be appreciate for any hints to tests, than can help. > > The server needs to be tested after these changes, and we need to make > sure the caches affected still work. > > (I suspect the gid cache code will oops if it's used after these > patches, since the table is left NULl?) > > And then we should also test in a container environment, with different > instances of mountd and rpc.svcidmapd running in each container, to > verify that the right thing happens. > Ok. I'll test server with 2-nd version of these patches tomorrow and reply with the results. Thanks, Bruce. -- Best regards, Stanislav Kinsbursky
creator: Stanislav Kinsbursky
date: 2012-01-19T17:51:59-00:00

Re: [PATCH 4/5] SUNRPC: ip map cache per network namespace cleanup
type: item
description: On Thu, Jan 19, 2012 at 09:10:08PM +0400, Stanislav Kinsbursky wrote: > 19.01.2012 20:37, J. Bruce Fields пишет: > >On Thu, Jan 19, 2012 at 06:49:31PM +0400, Stanislav Kinsbursky wrote: > >>This patch converts ip_map_cache per network namespace implemenetation to the > >>same view, as other caches done in the series. > >>Besides generalization, code becomes shorter with this patch. > > > >Again, isnt' it ip_map_cache, and not one of the dynamically created > >cache details, that's being passed to the lookup routines? > > > >I may just be confused.... > > > > Nope. ip_map_cache was made per network namespace a long time ago. > But it was done in other way: no static templates - just allocation > and initialization. > But static template looks clearer to me. So I've used this approach > for other caches. And decided to update ip_map_cache management in > the same way. Going and reading the code.... OK, I see what you mean, makes sense. Thanks! --b.
creator: bfields
date: 2012-01-19T22:21:01-00:00

Re: [PATCH 0/5] SUNRPC: make caches network namespace aware
type: item
description: On Thu, Jan 19, 2012 at 10:19:52AM -0500, Trond Myklebust wrote: > On Thu, 2012-01-19 at 18:48 +0400, Stanislav Kinsbursky wrote: > > One more step towards to "NFS in container". > > With this patch set caches are allocated per network namespace. > > > > The following series consists of: > > > > --- > > > > Stanislav Kinsbursky (5): > > SUNRPC: cache creation and destruction routines introduced > > SUNRPC: create unix gid cache per network namespace > > SUNRPC: create GSS auth cache per network namespace > > SUNRPC: ip map cache per network namespace cleanup > > SUNRPC: generic cache register routines removed > > The patches look good, and I've applied them for now in my 'devel' > branch so we can test them, but I'd like to get an Ack/Nack from Bruce > before committing to merging them. They look good to me. I'd like to hear how they've been tested--that done, they'll have my ack. --b.
creator: bfields
date: 2012-01-19T22:40:02-00:00