]> granicus.if.org Git - zfs/commitdiff
Allow chown/chgrp when no ACL SAs exist.
authorTim Chase <tim@chase2k.com>
Sat, 18 Jan 2014 16:46:43 +0000 (10:46 -0600)
committerBrian Behlendorf <behlendorf1@llnl.gov>
Thu, 23 Jan 2014 19:07:29 +0000 (11:07 -0800)
From the comment in the commit:

Some ZFS implementations (ZEVO) create neither a ZNODE_ACL nor a DACL_ACES
SA in which case ENOENT is returned from zfs_acl_node_read() when the
SA can't be located.  Allow chown/chgrp to succeed in these cases rather
than returning an error that makes no sense in the context of the caller.

Signed-off-by: Tim Chase <tim@chase2k.com>
Signed-off-by: Brian Behlendorf <behlendorf1@llnl.gov>
Issue zfs-osx/zfs#86
Closes #1911
Closes #2029

module/zfs/zfs_acl.c

index c5f76036fcbb6ddb253e4bbe8264c1957b9465c7..89b624528deffa2522ec27f3a99ed3157c07d0b9 100644 (file)
@@ -1166,6 +1166,17 @@ zfs_acl_chown_setattr(znode_t *zp)
                zp->z_mode = zfs_mode_compute(zp->z_mode, aclp,
                    &zp->z_pflags, zp->z_uid, zp->z_gid);
 
+       /*
+        * Some ZFS implementations (ZEVO) create neither a ZNODE_ACL
+        * nor a DACL_ACES SA in which case ENOENT is returned from
+        * zfs_acl_node_read() when the SA can't be located.
+        * Allow chown/chgrp to succeed in these cases rather than
+        * returning an error that makes no sense in the context of
+        * the caller.
+        */
+       if (error == ENOENT)
+               return (0);
+
        return (error);
 }