Re: [PATCH v2 9/9] cifs: ensure we revalidate the inode after readdir if cifsacl is enabled

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

 



On Sun, 25 Nov 2012 14:36:59 -0600
Steve French <smfrench@xxxxxxxxx> wrote:

> For the common case of simply "ls" (vs "ls -l") does this affect
> performance (have you double checked)?
> 

I haven't measured it, but it's noticable. There really is no
alternative though -- it's a correctness issue.

> On Fri, Oct 19, 2012 at 7:20 AM, Jeff Layton <jlayton@xxxxxxxxxx> wrote:
> > Otherwise, "ls -l" will simply show the ownership of the files as
> > the default mnt_uid/gid. This may make "ls -l" performance on large
> > directories super-suck in some cases, but that's the cost of cifsacl.
> >
> > One possibility to make it suck less would be to somehow proactively
> > dispatch the ACL requests asynchronously from readdir codepath, but
> > that's non-trivial to implement.
> >
> > Signed-off-by: Jeff Layton <jlayton@xxxxxxxxxx>
> > ---
> >  fs/cifs/readdir.c | 10 ++++++++++
> >  1 file changed, 10 insertions(+)
> >
> > diff --git a/fs/cifs/readdir.c b/fs/cifs/readdir.c
> > index f9b5d3d..96fe44b 100644
> > --- a/fs/cifs/readdir.c
> > +++ b/fs/cifs/readdir.c
> > @@ -134,6 +134,16 @@ cifs_fill_common_info(struct cifs_fattr *fattr, struct cifs_sb_info *cifs_sb)
> >         if (fattr->cf_cifsattrs & ATTR_READONLY)
> >                 fattr->cf_mode &= ~S_IWUGO;
> >
> > +       /*
> > +        * We of course don't get ACL info in FIND_FIRST/NEXT results, so
> > +        * mark it for revalidation so that "ls -l" will look right. It might
> > +        * be super-slow, but if we don't do this then the ownership of files
> > +        * may look wrong since the inodes may not have timed out by the time
> > +        * "ls" does a stat() call on them.
> > +        */
> > +       if (cifs_sb->mnt_cifs_flags & CIFS_MOUNT_CIFS_ACL)
> > +               fattr->cf_flags |= CIFS_FATTR_NEED_REVAL;
> > +
> >         if (cifs_sb->mnt_cifs_flags & CIFS_MOUNT_UNX_EMUL &&
> >             fattr->cf_cifsattrs & ATTR_SYSTEM) {
> >                 if (fattr->cf_eof == 0)  {
> > --
> > 1.7.11.7
> >
> 
> 
> 


-- 
Jeff Layton <jlayton@xxxxxxxxxx>
--
To unsubscribe from this list: send the line "unsubscribe linux-cifs" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at  http://vger.kernel.org/majordomo-info.html


[Linux USB Devel]     [Video for Linux]     [Linux Audio Users]     [Yosemite News]     [Linux Kernel]     [Linux SCSI]

  Powered by Linux