Re: [PATCH] NFS: Fix RCU warnings in nfs_inode_return_delegation_noreclaim() [ver #2]

David Howells
2010-04-06T16:14:09Z

Paul E. McKenney <paulmck@linux.vnet.ibm.com> wrote:

> > > So you have objected to needless memory barriers. How do you feel
> > > about possibly needless ACCESS_ONCE() calls?
> >
> > That would work here since it shouldn't emit any excess instructions.
>
> And here is the corresponding patch. Seem reasonable?

Actually, now I've thought about it some more. No, it's not reasonable.
You've written:

This patch adds a variant of rcu_dereference() that handles situations
where the RCU-protected data structure cannot change, perhaps due to
our holding the update-side lock, or where the RCU-protected pointer is
only to be tested, not dereferenced.

But if we hold the update-side lock, then why should we be forced to use
ACCESS_ONCE()?

In fact, if we don't hold the lock, but we want to test the pointer twice in
succession, why should we be required to use ACCESS_LOCK()?

David