Re: v4.2-rc dcache regression, probably 75a6f82a0d10

Al Viro
2015-08-01T17:09:48Z

On Sat, Aug 01, 2015 at 09:09:24AM -0700, Linus Torvalds wrote:
> On Sat, Aug 1, 2015 at 12:26 AM, Al Viro <viro@zeniv.linux.org.uk> wrote:
> >
> > Actually, the shit had hit the fan earlier. Look: in
> > commit b18825a7c8e37a7cf6abb97a12a6ad71af160de7
> > Author: David Howells <dhowells@redhat.com>
> > Date: Thu Sep 12 19:22:53 2013 +0100
> >
> > VFS: Put a small type field into struct dentry::d_flags
> >
> > we have this:
> >
> > - if (!can_lookup(nd->inode)) {
> > + if (!d_is_directory(nd->path.dentry)) {
>
> Ahh. That's subtle, yes. Inodes are stable in ways that dentries
> aren't. And the reason why Dominique bisected it to 4bf46a272647 would
> seem to be that while dentries aren't really stable, the dentry flags
> generally don't change. But dentry_iput() changed to actually clear
> the type when clearing the inode, so that probably added a few cases
> where it went from "stable in practice" to be more easily triggered.
>
> Your patch looks obviously correct, with the slight worry that there
> might be other cases of this.
>
> > there. AFAICS, other places of that sort are not a problem anymore.
>
> Al, do you plan a pull request? It would be good to get this into rc5
> (tomorrow) regardless of whether there might be other issues lurking
> too.

Will do later today. -stable branches will be interesting, though ;-/

Al, still digging through the loads of fun stuff in l-k mailbox...