Revert "ovl: turn of SB_POSIXACL with idmapped layers temporarily"
authorChristian Brauner <brauner@kernel.org>
Wed, 13 Jul 2022 09:47:44 +0000 (11:47 +0200)
committerChristian Brauner (Microsoft) <brauner@kernel.org>
Fri, 15 Jul 2022 20:10:51 +0000 (22:10 +0200)
This reverts commit 4a47c6385bb4e0786826e75bd4555aba32953653.

Now that we have a proper fix for POSIX ACLs with overlayfs on top of
idmapped layers revert the temporary fix.

Signed-off-by: Christian Brauner (Microsoft) <brauner@kernel.org>
Documentation/filesystems/overlayfs.rst
fs/overlayfs/super.c

index 316cfd8..7da6c30 100644 (file)
@@ -466,10 +466,6 @@ overlay filesystem and the value of st_ino for filesystem objects may not be
 persistent and could change even while the overlay filesystem is mounted, as
 summarized in the `Inode properties`_ table above.
 
-4) "idmapped mounts"
-When the upper or lower layers are idmapped mounts overlayfs will be mounted
-without support for POSIX Access Control Lists (ACLs). This limitation will
-eventually be lifted.
 
 Changes to underlying filesystems
 ---------------------------------
index 1ce5c96..e0a2e04 100644 (file)
@@ -1003,9 +1003,6 @@ ovl_posix_acl_xattr_get(const struct xattr_handler *handler,
                        struct dentry *dentry, struct inode *inode,
                        const char *name, void *buffer, size_t size)
 {
-       if (!IS_POSIXACL(inode))
-               return -EOPNOTSUPP;
-
        return ovl_xattr_get(dentry, inode, handler->name, buffer, size);
 }
 
@@ -1021,9 +1018,6 @@ ovl_posix_acl_xattr_set(const struct xattr_handler *handler,
        struct posix_acl *acl = NULL;
        int err;
 
-       if (!IS_POSIXACL(inode))
-               return -EOPNOTSUPP;
-
        /* Check that everything is OK before copy-up */
        if (value) {
                acl = posix_acl_from_xattr(&init_user_ns, value, size);
@@ -1966,20 +1960,6 @@ static struct dentry *ovl_get_root(struct super_block *sb,
        return root;
 }
 
-static bool ovl_has_idmapped_layers(struct ovl_fs *ofs)
-{
-
-       unsigned int i;
-       const struct vfsmount *mnt;
-
-       for (i = 0; i < ofs->numlayer; i++) {
-               mnt = ofs->layers[i].mnt;
-               if (mnt && is_idmapped_mnt(mnt))
-                       return true;
-       }
-       return false;
-}
-
 static int ovl_fill_super(struct super_block *sb, void *data, int silent)
 {
        struct path upperpath = { };
@@ -2149,10 +2129,7 @@ static int ovl_fill_super(struct super_block *sb, void *data, int silent)
        sb->s_xattr = ofs->config.userxattr ? ovl_user_xattr_handlers :
                ovl_trusted_xattr_handlers;
        sb->s_fs_info = ofs;
-       if (ovl_has_idmapped_layers(ofs))
-               pr_warn("POSIX ACLs are not yet supported with idmapped layers, mounting without ACL support.\n");
-       else
-               sb->s_flags |= SB_POSIXACL;
+       sb->s_flags |= SB_POSIXACL;
        sb->s_iflags |= SB_I_SKIP_SYNC;
 
        err = -ENOMEM;