> -----Original Message----- > From: Stanislav Kinsbursky [mailto:skinsbursky@xxxxxxxxxxxxx] > Sent: Tuesday, September 20, 2011 10:35 AM > To: Myklebust, Trond > Cc: Schumaker, Bryan; linux-nfs@xxxxxxxxxxxxxxx; Pavel Emelianov; > neilb@xxxxxxx; netdev@xxxxxxxxxxxxxxx; linux-kernel@xxxxxxxxxxxxxxx; > bfields@xxxxxxxxxxxx; davem@xxxxxxxxxxxxx > Subject: Re: [PATCH v4 1/8] SUNRPC: introduce helpers for reference > counted rpcbind clients > > 20.09.2011 18:14, Myklebust, Trond пишет: > > >>> > >>> 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? > > > > Yes, you right. > > > 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? > > > > 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. Cheers Trond ��.n��������+%������w��{.n�����{��w���jg��������ݢj����G�������j:+v���w�m������w�������h�����٥