On 4/15/06, Andrew Morton <[email protected]> wrote:
> "Bharata B Rao" <[email protected]> wrote:
> >
> > > OT, I'm a bit curious about this:
> > >
> > > list_del_init(tmp);
> > > spin_lock(&dentry->d_lock);
> > > if (atomic_read(&dentry->d_count)) {
> > > spin_unlock(&dentry->d_lock);
> > > continue;
> > > }
> > >
> > > So we rip the dentry off dcache_unused and just leave it floating about?
> > > Dipankar, do you remember why that change was made, and why it's not a bug?
> >
> > Due to lazy updating of the LRU list, there can be some dentries with non-zero
> > ref counts on LRU list. This is one of the places where such dentries are
> > removed from the LRU list. (Basically such dentries will be both on
> > hash list and LRU
> > list and here they get removed from the LRU list)
>
> OK. But what guarantees that these live-but-detached dentries are
> appropriately destroyed before the unmount completes?
These are live dentries but not really detached, they are still attached to
the hash list. And yes I don't see shrink_dcache_sb holding the umount
because of these dentries. I assume dput of such dentries will happen
from different paths. But I am not sure if we could even end up in this
situation where we have landed up in shrink_dcache_sb from unmount path
and there are still some inuse dentries present. Need some clarification here.
>
> Or... if these dentries will be freed by RCU callbacks potentially after
> the unmount, are we sure that they will always be in a state which will
> permit them to be freed?
When a dentry is queued for RCU freeing, there will be no references to
it from anywhere. It wouldn't be on hash list or on lru list. So I would think
only those dentries which are really freeable are queued for RCU freeing.
I see that shrink_dcache_sb is being called from the remount path
(do_remount_sb).
I couldn't understand why we do this. AFAICS we anyway don't modify the
mountpoint or the mount root during remount. Woudn't it be advantageous to
leave those dentries on LRU ?
Regards,
Bharata.
-
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to [email protected]
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/
[Index of Archives]
[Kernel Newbies]
[Netfilter]
[Bugtraq]
[Photo]
[Stuff]
[Gimp]
[Yosemite News]
[MIPS Linux]
[ARM Linux]
[Linux Security]
[Linux RAID]
[Video 4 Linux]
[Linux for the blind]
[Linux Resources]