Thread (34 messages) 34 messages, 4 authors, 2011-09-23

Re: [PATCH v4 1/8] SUNRPC: introduce helpers for reference counted rpcbind clients

flat view

From: Stanislav Kinsbursky <hidden>
Date: 2011-09-20 16:20:58
Also in: linux-nfs, lkml

20.09.2011 18:38, Myklebust, Trond пишет:
quoted
-----Original Message-----
From: Stanislav Kinsbursky [mailto:skinsbursky@parallels.com]
Sent: Tuesday, September 20, 2011 10:35 AM
To: Myklebust, Trond
Cc: Schumaker, Bryan; linux-nfs@vger.kernel.org; Pavel Emelianov;
neilb@suse.de; netdev@vger.kernel.org; linux-kernel@vger.kernel.org;
bfields@fieldses.org; davem@davemloft.net
Subject: Re: [PATCH v4 1/8] SUNRPC: introduce helpers for reference
counted rpcbind clients

20.09.2011 18:14, Myklebust, Trond пишет:
quoted
quoted
quoted
Doesn't it  need to be protected by rpcb_clnt_lock too?
Nope from my pow. It's protected by rpcb_create_local_mutex. I.e. no
one will change rpcb_users since it's zero. If it's non zero - we
willn't get to rpcb_set_local().
OK, so you are saying that the rpcb_users++ below could be replaced by
rpcb_users=1?
quoted
Yes, you right.
quoted
In that case, don't you need a smp_wmb() between the setting of
rpcb_local_clnt/4 and the setting of rpcb_users? Otherwise, how do you
guarantee that rpcb_users != 0 implies rpbc_local_clnt/4 != NULL?
quoted
We check rpcb_users under spinlock. Gain spinlock forces memory barrier,
doesn't it?
Yes, and so you don't need an smp_rmb() on the reader side. However, you still need to ensure that the processor which _sets_ the rpcb_users and rpcb_local_clnt/4 actually writes them in the correct order.
Trond, I've thought again and realized, that even if these writes (rpcb_users and rpbc_local_clnt/4) will be done in reversed order, then no barrier required here.
Because if we have another process trying to create those clients (it can't use them since it's not started yet) on other CPU, than it's waiting on creation mutex. When it will gain the mutex, we will have required memory barrier for us.

Or I missed something in your explanation?

-- 
Best regards,
Stanislav Kinsbursky
Keyboard shortcuts
hback out one level
jnext message in thread
kprevious message in thread
ldrill in
Escclose help / fold thread tree
?toggle this help