merged into cifs-2.6.git On Wed, Aug 7, 2013 at 9:29 AM, Jeff Layton <jlayton@xxxxxxxxxx> wrote: > David reported that commit c2b93e06 (cifs: only set ops for inodes in > I_NEW state) caused a regression with mfsymlinks. Prior to that patch, > if a mfsymlink dentry was instantiated at readdir time, the inode would > get a new set of ops when it was revalidated. After that patch, this > did not occur. > > This patch addresses this by simply skipping instantiating dentries in > the readdir codepath when we know that they will need to be immediately > revalidated. The next attempt to use that dentry will cause a new lookup > to occur (which is basically what we want to happen anyway). > > Cc: <stable@xxxxxxxxxxxxxxx> > Cc: "Stefan (metze) Metzmacher" <metze@xxxxxxxxx> > Cc: Sachin Prabhu <sprabhu@xxxxxxxxxx> > Reported-and-Tested-by: David McBride <dwm37@xxxxxxxxx> > Signed-off-by: Jeff Layton <jlayton@xxxxxxxxxx> > --- > fs/cifs/readdir.c | 8 ++++++++ > 1 file changed, 8 insertions(+) > > diff --git a/fs/cifs/readdir.c b/fs/cifs/readdir.c > index ab87784..69d2c82 100644 > --- a/fs/cifs/readdir.c > +++ b/fs/cifs/readdir.c > @@ -111,6 +111,14 @@ cifs_prime_dcache(struct dentry *parent, struct qstr *name, > return; > } > > + /* > + * If we know that the inode will need to be revalidated immediately, > + * then don't create a new dentry for it. We'll end up doing an on > + * the wire call either way and this spares us an invalidation. > + */ > + if (fattr->cf_flags & CIFS_FATTR_NEED_REVAL) > + return; > + > dentry = d_alloc(parent, name); > if (!dentry) > return; > -- > 1.8.3.1 > -- Thanks, Steve -- To unsubscribe from this list: send the line "unsubscribe stable" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html