On Sat, Jan 15, 2011 at 12:51 AM, Ian Kent <[email protected]> wrote:
> On Thu, 2011-01-13 at 21:54 +0000, David Howells wrote:
>> From: Ian Kent <[email protected]>
>> +     //spin_lock(&dcache_lock);  /////////////// JUST DELETE THIS LOCK?
>> +     if (!d_mountpoint(dentry) && list_empty(&dentry->d_subdirs)) {
>> +             spin_lock(&dentry->d_lock);
>> +             if (!(dentry->d_flags & DCACHE_MANAGE_TRANSIT) &&
>> +                  (dentry->d_flags & DCACHE_NEED_AUTOMOUNT))
>> +                     __managed_dentry_set_transit(path->dentry);
>> +             spin_unlock(&dentry->d_lock);
>> +     }
>> +     //spin_unlock(&dcache_lock);
>
> In this case I think the dcache_lock needs to be deleted and the d_lock
> moved out of the if to protect the d_subdirs access.

Right. If you follow the vfs-scale-working git branch series of
patches leading up to dcache_lock removal, it gives a pretty
good template of how to convert old dcache_lock using code
to new locking.

Although you can also just look at locking in fs/dcache.c and
convert code from that.

Any time you are dealing with just a *single* dentry, then
->d_lock would be enough to replace dcache_lock (it
actually protects more than dcache_lock alone did).

_______________________________________________
autofs mailing list
[email protected]
http://linux.kernel.org/mailman/listinfo/autofs

Reply via email to