• Christian Brauner's avatar
    fs: add new get acl method · 7420332a
    Christian Brauner authored
    The current way of setting and getting posix acls through the generic
    xattr interface is error prone and type unsafe. The vfs needs to
    interpret and fixup posix acls before storing or reporting it to
    userspace. Various hacks exist to make this work. The code is hard to
    understand and difficult to maintain in it's current form. Instead of
    making this work by hacking posix acls through xattr handlers we are
    building a dedicated posix acl api around the get and set inode
    operations. This removes a lot of hackiness and makes the codepaths
    easier to maintain. A lot of background can be found in [1].
    
    Since some filesystem rely on the dentry being available to them when
    setting posix acls (e.g., 9p and cifs) they cannot rely on the old get
    acl inode operation to retrieve posix acl and need to implement their
    own custom handlers because of that.
    
    In a previous patch we renamed the old get acl inode operation to
    ->get_inode_acl(). We decided to rename it and implement a new one since
    ->get_inode_acl() is called generic_permission() and inode_permission()
    both of which can be called during an filesystem's ->permission()
    handler. So simply passing a dentry argument to ->get_acl() would have
    amounted to also having to pass a dentry argument to ->permission(). We
    avoided that change.
    
    This adds a new ->get_acl() inode operations which takes a dentry
    argument which filesystems such as 9p, cifs, and overlayfs can implement
    to get posix acls.
    
    Link: https://lore.kernel.org/all/20220801145520.1532837-1-brauner@kernel.org [1]
    Signed-off-by: default avatarChristian Brauner (Microsoft) <brauner@kernel.org>
    7420332a
locking.rst 26.9 KB