Explorar el Código

ovl: explain error values when removing acl from workdir

Suggested-by: Linus Torvalds <torvalds@linux-foundation.org> 
Signed-off-by: Miklos Szeredi <mszeredi@redhat.com>
Miklos Szeredi hace 8 años
padre
commit
cb348edb6b
Se han modificado 1 ficheros con 13 adiciones y 0 borrados
  1. 13 0
      fs/overlayfs/super.c

+ 13 - 0
fs/overlayfs/super.c

@@ -832,6 +832,19 @@ retry:
 		if (err)
 		if (err)
 			goto out_dput;
 			goto out_dput;
 
 
+		/*
+		 * Try to remove POSIX ACL xattrs from workdir.  We are good if:
+		 *
+		 * a) success (there was a POSIX ACL xattr and was removed)
+		 * b) -ENODATA (there was no POSIX ACL xattr)
+		 * c) -EOPNOTSUPP (POSIX ACL xattrs are not supported)
+		 *
+		 * There are various other error values that could effectively
+		 * mean that the xattr doesn't exist (e.g. -ERANGE is returned
+		 * if the xattr name is too long), but the set of filesystems
+		 * allowed as upper are limited to "normal" ones, where checking
+		 * for the above two errors is sufficient.
+		 */
 		err = vfs_removexattr(work, XATTR_NAME_POSIX_ACL_DEFAULT);
 		err = vfs_removexattr(work, XATTR_NAME_POSIX_ACL_DEFAULT);
 		if (err && err != -ENODATA && err != -EOPNOTSUPP)
 		if (err && err != -ENODATA && err != -EOPNOTSUPP)
 			goto out_dput;
 			goto out_dput;