[Pvfs2-developers] ACL/getxattr overhead in ls
David Metheny
david.metheny at gmail.com
Thu May 4 11:38:45 EDT 2006
--- This is a strace on RHEL3
getxattr("/mnt/datagrid1", "system.posix_acl_access", (nil), 0) = -1 ENODATA
(No data available)
getxattr("/mnt/datagrid1", "system.posix_acl_default", (nil), 0) = -1
ENODATA (No data available)
--- This is a strace on RHEL4
getxattr("/mnt/datagrid1", "system.posix_acl_access", 0x0, 0) = -1
EOPNOTSUPP (Operation not supported)
> -----Original Message-----
> From: pvfs2-developers-bounces at beowulf-underground.org
> [mailto:pvfs2-developers-bounces at beowulf-underground.org] On
> Behalf Of Murali Vilayannur
> Sent: Thursday, May 04, 2006 10:31 AM
> To: Phil Carns
> Cc: PVFS2-developers
> Subject: Re: [Pvfs2-developers] ACL/getxattr overhead in ls
>
> Hi Phil,
>
> > We have noticed on RedHat RHEL3 and RHEL4 that when you do a long
> > listing of a directory (on any file system, not just pvfs2)
> that the
> > ls triggers a getxattr of "system.posix_acl_access" and
> > "system.posix_acl_default" for every single entry that is listed.
> > This happens regardless of whether ACLs are enabled for the
> file system or not.
> >
> > Digging in the coreutils/ls source, it turns out that ls (with -l
> > options at least) is checking to see if any acl's are set on each
> > entry so that it can display them differently, maybe with a
> "+" character.
> >
> > On RHEL3 at least (2.4 kernel) these extra getxattrs are causing 2
> > serialized getxattr requests that are probably
> significantly slowing
> > down the listing, which is a shame because the 2.4 kernel module
> > doesn't even support ACLs so there is never any point in checking.
> >
> > Does it seem reasonable to add a test in the kernel module
> so that if
> > a) acl's are not enabled (which can be determined by checking the
> > super block acl flag), and b) the getxattr name matches
> "system.posix_acl"
> > then we just immediately return an appropriate error code
> rather than
> > servicing the getxattr?
>
> I don't understand how this situation even happens..
> There is already such a check in acl.c in the function
> pvfs2_xattr_get_acl() to see if we support acl's or not
> before calling the underlying getxattr.
> Can you find out if the strace of an ls -l causes the
> getxattr() to return -EOPNOTSUPP instead of -ENODATA?
>
> Thanks,
> Murali
>
> >
> > The stock coreutils package doesn't currently have this problem,
> > because their acl check is broken for Linux. RedHat
> supplies a patch
> > with their rpm that adds acl checks that work on linux (using the
> > acl_extended_file() function rather than the unsupported acl()
> > function). I imagine there are other distributions that have done
> > likewise, and probably it will be "fixed" in the official
> gnu version
> > eventually also.
> >
> > -Phil
> >
> > _______________________________________________
> > Pvfs2-developers mailing list
> > Pvfs2-developers at beowulf-underground.org
> > http://www.beowulf-underground.org/mailman/listinfo/pvfs2-developers
> >
> >
> _______________________________________________
> Pvfs2-developers mailing list
> Pvfs2-developers at beowulf-underground.org
> http://www.beowulf-underground.org/mailman/listinfo/pvfs2-developers
>
More information about the Pvfs2-developers
mailing list