From: Brian Behlendorf Date: Thu, 17 Feb 2011 22:17:44 +0000 (-0800) Subject: Use provided uid/gid for setattr X-Git-Url: https://git.camperquake.de/gitweb.cgi?a=commitdiff_plain;ds=sidebyside;h=037849f854c511d86e3564ed7000e6c6472d6f70;p=zfs.git Use provided uid/gid for setattr When changing the uid/gid of a file via zfs_setattr() use the Posix id passed in iattr->ia_uid/gid. While the zfs_fuid_create() code already had the fuid support disabled for Linux it was returning the uid/gid from the credential. With this change the 'chown' command which relies on setxattr is now working properly. Also remove a little stray white space which was in front of zfs_update_inode() call and the end of zfs_setattr(). --- diff --git a/module/zfs/zfs_fuid.c b/module/zfs/zfs_fuid.c index f1e071f..ca03373 100644 --- a/module/zfs/zfs_fuid.c +++ b/module/zfs/zfs_fuid.c @@ -639,10 +639,10 @@ zfs_fuid_create(zfs_sb_t *zsb, uint64_t id, cred_t *cr, } return (FUID_ENCODE(idx, rid)); #else - if (type == ZFS_OWNER) - return crgetuid(cr); - else - return crgetgid(cr); + /* + * The Linux port only supports POSIX IDs, use the passed id. + */ + return (id); #endif } diff --git a/module/zfs/zfs_vnops.c b/module/zfs/zfs_vnops.c index fcc85b8..b20e3b2 100644 --- a/module/zfs/zfs_vnops.c +++ b/module/zfs/zfs_vnops.c @@ -2575,7 +2575,7 @@ out: } else { err2 = sa_bulk_update(zp->z_sa_hdl, bulk, count, tx); dmu_tx_commit(tx); - zfs_inode_update(zp); + zfs_inode_update(zp); } out2: