• Miklos Szeredi's avatar
    vfs: add fileattr ops · 4c5b4799
    Miklos Szeredi authored
    There's a substantial amount of boilerplate in filesystems handling
    FS_IOC_[GS]ETFLAGS/ FS_IOC_FS[GS]ETXATTR ioctls.
    
    Also due to userspace buffers being involved in the ioctl API this is
    difficult to stack, as shown by overlayfs issues related to these ioctls.
    
    Introduce a new internal API named "fileattr" (fsxattr can be confused with
    xattr, xflags is inappropriate, since this is more than just flags).
    
    There's significant overlap between flags and xflags and this API handles
    the conversions automatically, so filesystems may choose which one to use.
    
    In ->fileattr_get() a hint is provided to the filesystem whether flags or
    xattr are being requested by userspace, but in this series this hint is
    ignored by all filesystems, since generating all the attributes is cheap.
    
    If a filesystem doesn't implemement the fileattr API, just fall back to
    f_op->ioctl().  When all filesystems are converted, the fallback can be
    removed.
    
    32bit compat ioctls are now handled by the generic code as well.
    Signed-off-by: default avatarMiklos Szeredi <mszeredi@redhat.com>
    4c5b4799
locking.rst 25 KB