Re: Q: spin_unlock(dentry) after lock_parent(dentry)

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

 



On Tue, Jun 03, 2014 at 11:36:55PM +0900, J. R. Okajima wrote:
> 
> Hello Al Viro,
> 
> I have a question about spin_unlock(dentry) after lock_parent(dentry).
> In lock_parent(dentry), spin_unlock(dentry) is called. And
> spin_lock(dentry) is called again when (parent != dentry) is
> true. Otherwise, dentry left spin_unlock-ed and lock_parent() returns
> NULL.

Nope.  You are misreading it.  Note that in *all* cases the parent is
locked.  And NULL is returned exactly in the case when that parent is
equal to dentry itself.  IOW, in all cases, lock_parent(d) returns with d
locked and after p = lock_parent(d) either
	1) d->d_parent == d and p == NULL, or
	2) d->d_parent == p, p != d and p is locked as well.
That holds whether we had succeeded with trylock or had to drop and regain
the lock on d.

> Even in the case of lock_parent() returns NULL, shrink_dentry_list()
> calls spin_unlock(dentry). Is it balanced and correct?

Yes.
--
To unsubscribe from this list: send the line "unsubscribe linux-fsdevel" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at  http://vger.kernel.org/majordomo-info.html




[Index of Archives]     [Linux Ext4 Filesystem]     [Union Filesystem]     [Filesystem Testing]     [Ceph Users]     [Ecryptfs]     [AutoFS]     [Kernel Newbies]     [Share Photos]     [Security]     [Netfilter]     [Bugtraq]     [Yosemite News]     [MIPS Linux]     [ARM Linux]     [Linux Security]     [Linux Cachefs]     [Reiser Filesystem]     [Linux RAID]     [Samba]     [Device Mapper]     [CEPH Development]
  Powered by Linux