Thread (3 messages) flat view 3 messages, 3 authors, 2013-07-08

Re: [PATCH v3 24/25] sunrpc: Change how dentry's d_lock field is accessed

From: Al Viro <viro@ZenIV.linux.org.uk>
Date: 2013-07-04 04:20:34
Also in: linux-fsdevel, linux-nfs, lkml

On Wed, Jul 03, 2013 at 04:25:32PM -0400, Waiman Long wrote:
There is no change in logic and everything should just work.
-		spin_lock(&file->f_path.dentry->d_lock);
+		d_lock(file->f_path.dentry);
 		if (!d_unhashed(file->f_path.dentry))
 			clnt = RPC_I(inode)->private;
 		if (clnt != NULL && atomic_inc_not_zero(&clnt->cl_count)) {
-			spin_unlock(&file->f_path.dentry->d_lock);
+			d_unlock(file->f_path.dentry);
Could somebody explain WTF is being protected here?  It's not ->private -
that gets set (and, more importantly, cleared) without ->d_lock in sight.
Trond, that seems to be your code from about three years ago (introduced
in "SUNRPC: Fix a race in rpc_info_open").  What's going on there?
Keyboard shortcuts
hback out one level
jnext message in thread
kprevious message in thread
ldrill in
Escclose help / fold thread tree
?toggle this help