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

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



20.09.2011 18:38, Myklebust, Trond пишет:
-----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.


Yep, now I understand what are you talking about.
Will fix both places (set and put).

--
Best regards,
Stanislav Kinsbursky
--
To unsubscribe from this list: send the line "unsubscribe linux-nfs" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at  http://vger.kernel.org/majordomo-info.html


[Index of Archives]     [Linux Filesystem Development]     [Linux USB Development]     [Linux Media Development]     [Video for Linux]     [Linux NILFS]     [Linux Audio Users]     [Yosemite Info]     [Linux SCSI]

  Powered by Linux