Re: [PATCH] cifs: don't instantiate new dentries in readdir for inodes that need to be revalidated immediately

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

 



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




[Index of Archives]     [Linux Kernel]     [Kernel Development Newbies]     [Linux USB Devel]     [Video for Linux]     [Linux Audio Users]     [Yosemite Hiking]     [Linux Kernel]     [Linux SCSI]