summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorBrian Behlendorf <[email protected]>2011-02-17 14:17:44 -0800
committerBrian Behlendorf <[email protected]>2011-02-17 14:23:48 -0800
commit037849f854c511d86e3564ed7000e6c6472d6f70 (patch)
treeb331754d671c4af80ec696fbee59b7ab717f5af7
parentefd1832bc615a4e32259e31d1c7ff0af14f5c1b2 (diff)
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().
-rw-r--r--module/zfs/zfs_fuid.c8
-rw-r--r--module/zfs/zfs_vnops.c2
2 files changed, 5 insertions, 5 deletions
diff --git a/module/zfs/zfs_fuid.c b/module/zfs/zfs_fuid.c
index f1e071fc7..ca03373c7 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 fcc85b8a0..b20e3b2c3 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: