• Linus Torvalds's avatar
    Merge tag 'v6.4/vfs.acl' of git://git.kernel.org/pub/scm/linux/kernel/git/vfs/vfs · 7bcff5a3
    Linus Torvalds authored
    Pull acl updates from Christian Brauner:
     "After finishing the introduction of the new posix acl api last cycle
      the generic POSIX ACL xattr handlers are still around in the
      filesystems xattr handlers for two reasons:
    
       (1) Because a few filesystems rely on the ->list() method of the
           generic POSIX ACL xattr handlers in their ->listxattr() inode
           operation.
    
       (2) POSIX ACLs are only available if IOP_XATTR is raised. The
           IOP_XATTR flag is raised in inode_init_always() based on whether
           the sb->s_xattr pointer is non-NULL. IOW, the registered xattr
           handlers of the filesystem are used to raise IOP_XATTR. Removing
           the generic POSIX ACL xattr handlers from all filesystems would
           risk regressing filesystems that only implement POSIX ACL support
           and no other xattrs (nfs3 comes to mind).
    
      This contains the work to decouple POSIX ACLs from the IOP_XATTR flag
      as they don't depend on xattr handlers anymore. So it's now possible
      to remove the generic POSIX ACL xattr handlers from the sb->s_xattr
      list of all filesystems. This is a crucial step as the generic POSIX
      ACL xattr handlers aren't used for POSIX ACLs anymore and POSIX ACLs
      don't depend on the xattr infrastructure anymore.
    
      Adressing problem (1) will require more long-term work. It would be
      best to get rid of the ->list() method of xattr handlers completely at
      some point.
    
      For erofs, ext{2,4}, f2fs, jffs2, ocfs2, and reiserfs the nop POSIX
      ACL xattr handler is kept around so they can continue to use
      array-based xattr handler indexing.
    
      This update does simplify the ->listxattr() implementation of all
      these filesystems however"
    
    * tag 'v6.4/vfs.acl' of git://git.kernel.org/pub/scm/linux/kernel/git/vfs/vfs:
      acl: don't depend on IOP_XATTR
      ovl: check for ->listxattr() support
      reiserfs: rework priv inode handling
      fs: rename generic posix acl handlers
      reiserfs: rework ->listxattr() implementation
      fs: simplify ->listxattr() implementation
      fs: drop unused posix acl handlers
      xattr: remove unused argument
      xattr: add listxattr helper
      xattr: simplify listxattr helpers
    7bcff5a3
xattr.c 4.87 KB