2018-03-13 10:49:13

by Kirill Tkhai

[permalink] [raw]
Subject: [PATCH net-next nfs 0/6] Converting pernet_operations (part #7)

Hi,

this series continues to review and to convert pernet_operations
to make them possible to be executed in parallel for several
net namespaces in the same time. There are nfs pernet_operations
in this series. All of them look similar each other, they mostly
create and destroy caches with small exceptions.

Also, there is rxrpc_net_ops, which is used in AFS.

Thanks,
Kirill
---

Kirill Tkhai (6):
net: Convert rpcsec_gss_net_ops
net: Convert sunrpc_net_ops
net: Convert nfsd_net_ops
net: Convert nfs4_dns_resolver_ops
net: Convert nfs4blocklayout_net_ops
net: Convert rxrpc_net_ops


fs/nfs/blocklayout/rpc_pipefs.c | 1 +
fs/nfs/dns_resolve.c | 1 +
fs/nfsd/nfsctl.c | 1 +
net/rxrpc/net_ns.c | 1 +
net/sunrpc/auth_gss/auth_gss.c | 1 +
net/sunrpc/sunrpc_syms.c | 1 +
6 files changed, 6 insertions(+)

--
Signed-off-by: Kirill Tkhai <[email protected]>


2018-03-13 10:49:27

by Kirill Tkhai

[permalink] [raw]
Subject: [PATCH net-next nfs 1/6] net: Convert rpcsec_gss_net_ops

These pernet_operations initialize and destroy sunrpc_net_id
refered per-net items. Only used global list is cache_list,
and accesses already serialized.

sunrpc_destroy_cache_detail() check for list_empty() without
cache_list_lock, but when it's called from unregister_pernet_subsys(),
there can't be callers in parallel, so we won't miss list_empty()
in this case.

Signed-off-by: Kirill Tkhai <[email protected]>
---
net/sunrpc/auth_gss/auth_gss.c | 1 +
1 file changed, 1 insertion(+)

diff --git a/net/sunrpc/auth_gss/auth_gss.c b/net/sunrpc/auth_gss/auth_gss.c
index 9463af4b32e8..44f939cb6bc8 100644
--- a/net/sunrpc/auth_gss/auth_gss.c
+++ b/net/sunrpc/auth_gss/auth_gss.c
@@ -2063,6 +2063,7 @@ static __net_exit void rpcsec_gss_exit_net(struct net *net)
static struct pernet_operations rpcsec_gss_net_ops = {
.init = rpcsec_gss_init_net,
.exit = rpcsec_gss_exit_net,
+ .async = true,
};

/*


2018-03-13 10:49:36

by Kirill Tkhai

[permalink] [raw]
Subject: [PATCH net-next nfs 2/6] net: Convert sunrpc_net_ops

These pernet_operations look similar to rpcsec_gss_net_ops,
they just create and destroy another caches. So, they also
can be async.

Signed-off-by: Kirill Tkhai <[email protected]>
---
net/sunrpc/sunrpc_syms.c | 1 +
1 file changed, 1 insertion(+)

diff --git a/net/sunrpc/sunrpc_syms.c b/net/sunrpc/sunrpc_syms.c
index 56f9eff74150..68287e921847 100644
--- a/net/sunrpc/sunrpc_syms.c
+++ b/net/sunrpc/sunrpc_syms.c
@@ -79,6 +79,7 @@ static struct pernet_operations sunrpc_net_ops = {
.exit = sunrpc_exit_net,
.id = &sunrpc_net_id,
.size = sizeof(struct sunrpc_net),
+ .async = true,
};

static int __init


2018-03-13 10:49:46

by Kirill Tkhai

[permalink] [raw]
Subject: [PATCH net-next nfs 3/6] net: Convert nfsd_net_ops

These pernet_operations look similar to rpcsec_gss_net_ops,
they just create and destroy another caches. So, they also
can be async.

Signed-off-by: Kirill Tkhai <[email protected]>
---
fs/nfsd/nfsctl.c | 1 +
1 file changed, 1 insertion(+)

diff --git a/fs/nfsd/nfsctl.c b/fs/nfsd/nfsctl.c
index d107b4426f7e..1e3824e6cce0 100644
--- a/fs/nfsd/nfsctl.c
+++ b/fs/nfsd/nfsctl.c
@@ -1263,6 +1263,7 @@ static struct pernet_operations nfsd_net_ops = {
.exit = nfsd_exit_net,
.id = &nfsd_net_id,
.size = sizeof(struct nfsd_net),
+ .async = true,
};

static int __init init_nfsd(void)


2018-03-13 10:49:55

by Kirill Tkhai

[permalink] [raw]
Subject: [PATCH net-next nfs 4/6] net: Convert nfs4_dns_resolver_ops

These pernet_operations look similar to rpcsec_gss_net_ops,
they just create and destroy another cache. Also they create
and destroy directory. So, they also look safe to be async.

Signed-off-by: Kirill Tkhai <[email protected]>
---
fs/nfs/dns_resolve.c | 1 +
1 file changed, 1 insertion(+)

diff --git a/fs/nfs/dns_resolve.c b/fs/nfs/dns_resolve.c
index 060c658eab66..e90bd69ab653 100644
--- a/fs/nfs/dns_resolve.c
+++ b/fs/nfs/dns_resolve.c
@@ -410,6 +410,7 @@ static void nfs4_dns_net_exit(struct net *net)
static struct pernet_operations nfs4_dns_resolver_ops = {
.init = nfs4_dns_net_init,
.exit = nfs4_dns_net_exit,
+ .async = true,
};

static int rpc_pipefs_event(struct notifier_block *nb, unsigned long event,


2018-03-13 10:50:03

by Kirill Tkhai

[permalink] [raw]
Subject: [PATCH net-next nfs 5/6] net: Convert nfs4blocklayout_net_ops

These pernet_operations create and destroy per-net pipe
and dentry, and they seem safe to be marked as async.

Signed-off-by: Kirill Tkhai <[email protected]>
---
fs/nfs/blocklayout/rpc_pipefs.c | 1 +
1 file changed, 1 insertion(+)

diff --git a/fs/nfs/blocklayout/rpc_pipefs.c b/fs/nfs/blocklayout/rpc_pipefs.c
index 9fb067a6f7e0..ef9fa111b009 100644
--- a/fs/nfs/blocklayout/rpc_pipefs.c
+++ b/fs/nfs/blocklayout/rpc_pipefs.c
@@ -261,6 +261,7 @@ static void nfs4blocklayout_net_exit(struct net *net)
static struct pernet_operations nfs4blocklayout_net_ops = {
.init = nfs4blocklayout_net_init,
.exit = nfs4blocklayout_net_exit,
+ .async = true,
};

int __init bl_init_pipefs(void)


2018-03-13 10:50:15

by Kirill Tkhai

[permalink] [raw]
Subject: [PATCH net-next nfs 6/6] net: Convert rxrpc_net_ops

These pernet_operations modifies rxrpc_net_id-pointed
per-net entities. There is external link to AF_RXRPC
in fs/afs/Kconfig, but it seems there is no other
pernet_operations interested in that per-net entities.

Signed-off-by: Kirill Tkhai <[email protected]>
---
net/rxrpc/net_ns.c | 1 +
1 file changed, 1 insertion(+)

diff --git a/net/rxrpc/net_ns.c b/net/rxrpc/net_ns.c
index f18c9248e0d4..5fd939dabf41 100644
--- a/net/rxrpc/net_ns.c
+++ b/net/rxrpc/net_ns.c
@@ -106,4 +106,5 @@ struct pernet_operations rxrpc_net_ops = {
.exit = rxrpc_exit_net,
.id = &rxrpc_net_id,
.size = sizeof(struct rxrpc_net),
+ .async = true,
};


2018-03-13 15:26:05

by David Miller

[permalink] [raw]
Subject: Re: [PATCH net-next nfs 0/6] Converting pernet_operations (part #7)

From: Kirill Tkhai <[email protected]>
Date: Tue, 13 Mar 2018 13:49:05 +0300

> Hi,
>
> this series continues to review and to convert pernet_operations
> to make them possible to be executed in parallel for several
> net namespaces in the same time. There are nfs pernet_operations
> in this series. All of them look similar each other, they mostly
> create and destroy caches with small exceptions.
>
> Also, there is rxrpc_net_ops, which is used in AFS.

I'll let the various maintainers pick these up instead of passing
them via the net-next tree.

2018-03-15 13:32:38

by Kirill Tkhai

[permalink] [raw]
Subject: Re: [PATCH net-next nfs 0/6] Converting pernet_operations (part #7)

Hi,

Trond, Anna, Bruce, Jeff, David and other NFS and RXRPC people,
could you please provide your vision on this patches?

Thanks,
Kirill

On 13.03.2018 13:49, Kirill Tkhai wrote:
> Hi,
>
> this series continues to review and to convert pernet_operations
> to make them possible to be executed in parallel for several
> net namespaces in the same time. There are nfs pernet_operations
> in this series. All of them look similar each other, they mostly
> create and destroy caches with small exceptions.
>
> Also, there is rxrpc_net_ops, which is used in AFS.
>
> Thanks,
> Kirill
> ---
>
> Kirill Tkhai (6):
> net: Convert rpcsec_gss_net_ops
> net: Convert sunrpc_net_ops
> net: Convert nfsd_net_ops
> net: Convert nfs4_dns_resolver_ops
> net: Convert nfs4blocklayout_net_ops
> net: Convert rxrpc_net_ops
>
>
> fs/nfs/blocklayout/rpc_pipefs.c | 1 +
> fs/nfs/dns_resolve.c | 1 +
> fs/nfsd/nfsctl.c | 1 +
> net/rxrpc/net_ns.c | 1 +
> net/sunrpc/auth_gss/auth_gss.c | 1 +
> net/sunrpc/sunrpc_syms.c | 1 +
> 6 files changed, 6 insertions(+)
>
> --
> Signed-off-by: Kirill Tkhai <[email protected]>
>

2018-03-15 14:24:53

by J. Bruce Fields

[permalink] [raw]
Subject: Re: [PATCH net-next nfs 0/6] Converting pernet_operations (part #7)

On Thu, Mar 15, 2018 at 04:32:30PM +0300, Kirill Tkhai wrote:
> Trond, Anna, Bruce, Jeff, David and other NFS and RXRPC people,
> could you please provide your vision on this patches?

Whoops, sorry, I haven't been paying attention. Do you have a pointer
to documentation? I'm unclear what the actual concurrency change
is--sounds like it becomes possible that e.g. multiple ->init methods
(from the same pernet_operations but for different namespaces) could run
in parallel?

Sounds likely to be safe, and I don't actually care too much who merges
them as they look very unlikely to conflict with anything pending. But
unless anyone tells me otherwise I'll take the one nfsd_net_ops patch
and leave the rest to Anna or Trond.

--b.


>
> Thanks,
> Kirill
>
> On 13.03.2018 13:49, Kirill Tkhai wrote:
> > Hi,
> >
> > this series continues to review and to convert pernet_operations
> > to make them possible to be executed in parallel for several
> > net namespaces in the same time. There are nfs pernet_operations
> > in this series. All of them look similar each other, they mostly
> > create and destroy caches with small exceptions.
> >
> > Also, there is rxrpc_net_ops, which is used in AFS.
> >
> > Thanks,
> > Kirill
> > ---
> >
> > Kirill Tkhai (6):
> > net: Convert rpcsec_gss_net_ops
> > net: Convert sunrpc_net_ops
> > net: Convert nfsd_net_ops
> > net: Convert nfs4_dns_resolver_ops
> > net: Convert nfs4blocklayout_net_ops
> > net: Convert rxrpc_net_ops
> >
> >
> > fs/nfs/blocklayout/rpc_pipefs.c | 1 +
> > fs/nfs/dns_resolve.c | 1 +
> > fs/nfsd/nfsctl.c | 1 +
> > net/rxrpc/net_ns.c | 1 +
> > net/sunrpc/auth_gss/auth_gss.c | 1 +
> > net/sunrpc/sunrpc_syms.c | 1 +
> > 6 files changed, 6 insertions(+)
> >
> > --
> > Signed-off-by: Kirill Tkhai <[email protected]>
> >

2018-03-15 14:46:45

by Kirill Tkhai

[permalink] [raw]
Subject: Re: [PATCH net-next nfs 0/6] Converting pernet_operations (part #7)

On 15.03.2018 17:24, J. Bruce Fields wrote:
> On Thu, Mar 15, 2018 at 04:32:30PM +0300, Kirill Tkhai wrote:
>> Trond, Anna, Bruce, Jeff, David and other NFS and RXRPC people,
>> could you please provide your vision on this patches?
>
> Whoops, sorry, I haven't been paying attention. Do you have a pointer
> to documentation? I'm unclear what the actual concurrency change
> is--sounds like it becomes possible that e.g. multiple ->init methods
> (from the same pernet_operations but for different namespaces) could run
> in parallel?

There is a commentary near struct pernet_operations in fresh net-next.git:

struct pernet_operations {
struct list_head list;
/*
* Below methods are called without any exclusive locks.
* More than one net may be constructed and destructed
* in parallel on several cpus. Every pernet_operations
* have to keep in mind all other pernet_operations and
* to introduce a locking, if they share common resources.
*
* Exit methods using blocking RCU primitives, such as
* synchronize_rcu(), should be implemented via exit_batch.
* Then, destruction of a group of net requires single
* synchronize_rcu() related to these pernet_operations,
* instead of separate synchronize_rcu() for every net.
* Please, avoid synchronize_rcu() at all, where it's possible.
*/

I hope this is enough. Please tell me, if there is unclear thing, I'll
extend it.

> Sounds likely to be safe, and I don't actually care too much who merges
> them as they look very unlikely to conflict with anything pending. But
> unless anyone tells me otherwise I'll take the one nfsd_net_ops patch
> and leave the rest to Anna or Trond.

Sounds great. Thanks!

Kirill

>> Thanks,
>> Kirill
>>
>> On 13.03.2018 13:49, Kirill Tkhai wrote:
>>> Hi,
>>>
>>> this series continues to review and to convert pernet_operations
>>> to make them possible to be executed in parallel for several
>>> net namespaces in the same time. There are nfs pernet_operations
>>> in this series. All of them look similar each other, they mostly
>>> create and destroy caches with small exceptions.
>>>
>>> Also, there is rxrpc_net_ops, which is used in AFS.
>>>
>>> Thanks,
>>> Kirill
>>> ---
>>>
>>> Kirill Tkhai (6):
>>> net: Convert rpcsec_gss_net_ops
>>> net: Convert sunrpc_net_ops
>>> net: Convert nfsd_net_ops
>>> net: Convert nfs4_dns_resolver_ops
>>> net: Convert nfs4blocklayout_net_ops
>>> net: Convert rxrpc_net_ops
>>>
>>>
>>> fs/nfs/blocklayout/rpc_pipefs.c | 1 +
>>> fs/nfs/dns_resolve.c | 1 +
>>> fs/nfsd/nfsctl.c | 1 +
>>> net/rxrpc/net_ns.c | 1 +
>>> net/sunrpc/auth_gss/auth_gss.c | 1 +
>>> net/sunrpc/sunrpc_syms.c | 1 +
>>> 6 files changed, 6 insertions(+)
>>>
>>> --
>>> Signed-off-by: Kirill Tkhai <[email protected]>
>>>

2018-03-20 16:49:53

by David Howells

[permalink] [raw]
Subject: Re: [PATCH net-next nfs 6/6] net: Convert rxrpc_net_ops

Kirill Tkhai <[email protected]> wrote:

> These pernet_operations modifies rxrpc_net_id-pointed
> per-net entities. There is external link to AF_RXRPC
> in fs/afs/Kconfig, but it seems there is no other
> pernet_operations interested in that per-net entities.

The fs/afs/ namespacing stuff isn't active yet as I'm trying to decide on how
to deal with the DNS cache which also needs namespacing.

> Signed-off-by: Kirill Tkhai <[email protected]>

DaveM: Can you take this into net-next and add:

Acked-by: David Howells <[email protected]>

2018-03-23 18:54:08

by Anna Schumaker

[permalink] [raw]
Subject: Re: [PATCH net-next nfs 4/6] net: Convert nfs4_dns_resolver_ops



On 03/13/2018 06:49 AM, Kirill Tkhai wrote:
> These pernet_operations look similar to rpcsec_gss_net_ops,
> they just create and destroy another cache. Also they create
> and destroy directory. So, they also look safe to be async.
>
> Signed-off-by: Kirill Tkhai <[email protected]>

Acked-by: Anna Schumaker <[email protected]>

> ---
> fs/nfs/dns_resolve.c | 1 +
> 1 file changed, 1 insertion(+)
>
> diff --git a/fs/nfs/dns_resolve.c b/fs/nfs/dns_resolve.c
> index 060c658eab66..e90bd69ab653 100644
> --- a/fs/nfs/dns_resolve.c
> +++ b/fs/nfs/dns_resolve.c
> @@ -410,6 +410,7 @@ static void nfs4_dns_net_exit(struct net *net)
> static struct pernet_operations nfs4_dns_resolver_ops = {
> .init = nfs4_dns_net_init,
> .exit = nfs4_dns_net_exit,
> + .async = true,
> };
>
> static int rpc_pipefs_event(struct notifier_block *nb, unsigned long event,
>

2018-03-23 18:54:05

by Anna Schumaker

[permalink] [raw]
Subject: Re: [PATCH net-next nfs 2/6] net: Convert sunrpc_net_ops



On 03/13/2018 06:49 AM, Kirill Tkhai wrote:
> These pernet_operations look similar to rpcsec_gss_net_ops,
> they just create and destroy another caches. So, they also
> can be async.
>
> Signed-off-by: Kirill Tkhai <[email protected]>

Acked-by: Anna Schumaker <[email protected]>

> ---
> net/sunrpc/sunrpc_syms.c | 1 +
> 1 file changed, 1 insertion(+)
>
> diff --git a/net/sunrpc/sunrpc_syms.c b/net/sunrpc/sunrpc_syms.c
> index 56f9eff74150..68287e921847 100644
> --- a/net/sunrpc/sunrpc_syms.c
> +++ b/net/sunrpc/sunrpc_syms.c
> @@ -79,6 +79,7 @@ static struct pernet_operations sunrpc_net_ops = {
> .exit = sunrpc_exit_net,
> .id = &sunrpc_net_id,
> .size = sizeof(struct sunrpc_net),
> + .async = true,
> };
>
> static int __init
>

2018-03-23 18:54:38

by Anna Schumaker

[permalink] [raw]
Subject: Re: [PATCH net-next nfs 5/6] net: Convert nfs4blocklayout_net_ops



On 03/13/2018 06:49 AM, Kirill Tkhai wrote:
> These pernet_operations create and destroy per-net pipe
> and dentry, and they seem safe to be marked as async.
>
> Signed-off-by: Kirill Tkhai <[email protected]>

Acked-by: Anna Schumaker <[email protected]>

> ---
> fs/nfs/blocklayout/rpc_pipefs.c | 1 +
> 1 file changed, 1 insertion(+)
>
> diff --git a/fs/nfs/blocklayout/rpc_pipefs.c b/fs/nfs/blocklayout/rpc_pipefs.c
> index 9fb067a6f7e0..ef9fa111b009 100644
> --- a/fs/nfs/blocklayout/rpc_pipefs.c
> +++ b/fs/nfs/blocklayout/rpc_pipefs.c
> @@ -261,6 +261,7 @@ static void nfs4blocklayout_net_exit(struct net *net)
> static struct pernet_operations nfs4blocklayout_net_ops = {
> .init = nfs4blocklayout_net_init,
> .exit = nfs4blocklayout_net_exit,
> + .async = true,
> };
>
> int __init bl_init_pipefs(void)
>

2018-03-23 18:56:13

by Anna Schumaker

[permalink] [raw]
Subject: Re: [PATCH net-next nfs 1/6] net: Convert rpcsec_gss_net_ops



On 03/13/2018 06:49 AM, Kirill Tkhai wrote:
> These pernet_operations initialize and destroy sunrpc_net_id
> refered per-net items. Only used global list is cache_list,
> and accesses already serialized.
>
> sunrpc_destroy_cache_detail() check for list_empty() without
> cache_list_lock, but when it's called from unregister_pernet_subsys(),
> there can't be callers in parallel, so we won't miss list_empty()
> in this case.
>
> Signed-off-by: Kirill Tkhai <[email protected]>

It might make sense to take these and the other NFS patches through the net tree, since the pernet_operations don't yet have the async field in my tree (and I therefore can't compile once these are applied).

Acked-by: Anna Schumaker <[email protected]>

> ---
> net/sunrpc/auth_gss/auth_gss.c | 1 +
> 1 file changed, 1 insertion(+)
>
> diff --git a/net/sunrpc/auth_gss/auth_gss.c b/net/sunrpc/auth_gss/auth_gss.c
> index 9463af4b32e8..44f939cb6bc8 100644
> --- a/net/sunrpc/auth_gss/auth_gss.c
> +++ b/net/sunrpc/auth_gss/auth_gss.c
> @@ -2063,6 +2063,7 @@ static __net_exit void rpcsec_gss_exit_net(struct net *net)
> static struct pernet_operations rpcsec_gss_net_ops = {
> .init = rpcsec_gss_init_net,
> .exit = rpcsec_gss_exit_net,
> + .async = true,
> };
>
> /*
>

2018-03-23 18:56:05

by Anna Schumaker

[permalink] [raw]
Subject: Re: [PATCH net-next nfs 1/6] net: Convert rpcsec_gss_net_ops



On 03/13/2018 06:49 AM, Kirill Tkhai wrote:
> These pernet_operations initialize and destroy sunrpc_net_id
> refered per-net items. Only used global list is cache_list,
> and accesses already serialized.
>
> sunrpc_destroy_cache_detail() check for list_empty() without
> cache_list_lock, but when it's called from unregister_pernet_subsys(),
> there can't be callers in parallel, so we won't miss list_empty()
> in this case.
>
> Signed-off-by: Kirill Tkhai <[email protected]>

It might make sense to take these and the other NFS patches through the net tree, since the pernet_operations don't yet have the async field in my tree (and I therefore can't compile once these are applied).

Acked-by: Anna Schumaker <[email protected]>

> ---
> net/sunrpc/auth_gss/auth_gss.c | 1 +
> 1 file changed, 1 insertion(+)
>
> diff --git a/net/sunrpc/auth_gss/auth_gss.c b/net/sunrpc/auth_gss/auth_gss.c
> index 9463af4b32e8..44f939cb6bc8 100644
> --- a/net/sunrpc/auth_gss/auth_gss.c
> +++ b/net/sunrpc/auth_gss/auth_gss.c
> @@ -2063,6 +2063,7 @@ static __net_exit void rpcsec_gss_exit_net(struct net *net)
> static struct pernet_operations rpcsec_gss_net_ops = {
> .init = rpcsec_gss_init_net,
> .exit = rpcsec_gss_exit_net,
> + .async = true,
> };
>
> /*
>

2018-03-26 09:30:36

by Kirill Tkhai

[permalink] [raw]
Subject: Re: [PATCH net-next nfs 1/6] net: Convert rpcsec_gss_net_ops

On 23.03.2018 21:53, Anna Schumaker wrote:
>
>
> On 03/13/2018 06:49 AM, Kirill Tkhai wrote:
>> These pernet_operations initialize and destroy sunrpc_net_id
>> refered per-net items. Only used global list is cache_list,
>> and accesses already serialized.
>>
>> sunrpc_destroy_cache_detail() check for list_empty() without
>> cache_list_lock, but when it's called from unregister_pernet_subsys(),
>> there can't be callers in parallel, so we won't miss list_empty()
>> in this case.
>>
>> Signed-off-by: Kirill Tkhai <[email protected]>
>
> It might make sense to take these and the other NFS patches through the net tree, since the pernet_operations don't yet have the async field in my tree (and I therefore can't compile once these are applied).
>
> Acked-by: Anna Schumaker <[email protected]>

Thanks a lot, Anna!

Kirill

>> ---
>> net/sunrpc/auth_gss/auth_gss.c | 1 +
>> 1 file changed, 1 insertion(+)
>>
>> diff --git a/net/sunrpc/auth_gss/auth_gss.c b/net/sunrpc/auth_gss/auth_gss.c
>> index 9463af4b32e8..44f939cb6bc8 100644
>> --- a/net/sunrpc/auth_gss/auth_gss.c
>> +++ b/net/sunrpc/auth_gss/auth_gss.c
>> @@ -2063,6 +2063,7 @@ static __net_exit void rpcsec_gss_exit_net(struct net *net)
>> static struct pernet_operations rpcsec_gss_net_ops = {
>> .init = rpcsec_gss_init_net,
>> .exit = rpcsec_gss_exit_net,
>> + .async = true,
>> };
>>
>> /*
>>

2018-03-26 18:36:59

by J. Bruce Fields

[permalink] [raw]
Subject: Re: [PATCH net-next nfs 1/6] net: Convert rpcsec_gss_net_ops

On Fri, Mar 23, 2018 at 02:53:34PM -0400, Anna Schumaker wrote:
>
>
> On 03/13/2018 06:49 AM, Kirill Tkhai wrote:
> > These pernet_operations initialize and destroy sunrpc_net_id refered
> > per-net items. Only used global list is cache_list, and accesses
> > already serialized.
> >
> > sunrpc_destroy_cache_detail() check for list_empty() without
> > cache_list_lock, but when it's called from
> > unregister_pernet_subsys(), there can't be callers in parallel, so
> > we won't miss list_empty() in this case.
> >
> > Signed-off-by: Kirill Tkhai <[email protected]>
>
> It might make sense to take these and the other NFS patches through
> the net tree, since the pernet_operations don't yet have the async
> field in my tree (and I therefore can't compile once these are
> applied).

Ditto for the nfsd patch, so, for what it's worth:

Acked-by: J. Bruce Fields <[email protected]>

for that patch.--b.

--b.

2018-03-27 08:52:17

by Kirill Tkhai

[permalink] [raw]
Subject: Re: [PATCH net-next nfs 1/6] net: Convert rpcsec_gss_net_ops

On 26.03.2018 21:36, J. Bruce Fields wrote:
> On Fri, Mar 23, 2018 at 02:53:34PM -0400, Anna Schumaker wrote:
>>
>>
>> On 03/13/2018 06:49 AM, Kirill Tkhai wrote:
>>> These pernet_operations initialize and destroy sunrpc_net_id refered
>>> per-net items. Only used global list is cache_list, and accesses
>>> already serialized.
>>>
>>> sunrpc_destroy_cache_detail() check for list_empty() without
>>> cache_list_lock, but when it's called from
>>> unregister_pernet_subsys(), there can't be callers in parallel, so
>>> we won't miss list_empty() in this case.
>>>
>>> Signed-off-by: Kirill Tkhai <[email protected]>
>>
>> It might make sense to take these and the other NFS patches through
>> the net tree, since the pernet_operations don't yet have the async
>> field in my tree (and I therefore can't compile once these are
>> applied).
>
> Ditto for the nfsd patch, so, for what it's worth:
>
> Acked-by: J. Bruce Fields <[email protected]>
>
> for that patch.--b.

Thanks, Bruce.

Kirill