6938757 SMB and NFS referrals not working correctly
6939680 zfs_sa_upgrade can leak slink pointer
6939859 zfs maps first SID incorrectly when no fuid table exists
--- a/usr/src/cmd/zdb/zdb.c Wed Mar 31 15:31:10 2010 -0600
+++ b/usr/src/cmd/zdb/zdb.c Wed Mar 31 15:46:12 2010 -0600
@@ -19,8 +19,7 @@
* CDDL HEADER END
*/
/*
- * Copyright 2010 Sun Microsystems, Inc. All rights reserved.
- * Use is subject to license terms.
+ * Copyright (c) 2005, 2010, Oracle and/or its affiliates. All rights reserved.
*/
#include <stdio.h>
@@ -1240,9 +1239,10 @@
sa_handle_t *hdl;
uint64_t xattr, rdev, gen;
uint64_t uid, gid, mode, fsize, parent, links;
+ uint64_t pflags;
uint64_t acctm[2], modtm[2], chgtm[2], crtm[2];
time_t z_crtime, z_atime, z_mtime, z_ctime;
- sa_bulk_attr_t bulk[11];
+ sa_bulk_attr_t bulk[12];
int idx = 0;
int error;
@@ -1285,6 +1285,8 @@
crtm, 16);
SA_ADD_BULK_ATTR(bulk, idx, sa_attr_table[ZPL_CTIME], NULL,
chgtm, 16);
+ SA_ADD_BULK_ATTR(bulk, idx, sa_attr_table[ZPL_FLAGS], NULL,
+ &pflags, 8);
if (sa_bulk_lookup(hdl, bulk, idx)) {
(void) sa_handle_destroy(hdl);
@@ -1318,6 +1320,7 @@
(void) printf("\tsize %llu\n", (u_longlong_t)fsize);
(void) printf("\tparent %llu\n", (u_longlong_t)parent);
(void) printf("\tlinks %llu\n", (u_longlong_t)links);
+ (void) printf("\tpflags %llx\n", (u_longlong_t)pflags);
if (sa_lookup(hdl, sa_attr_table[ZPL_XATTR], &xattr,
sizeof (uint64_t)) == 0)
(void) printf("\txattr %llu\n", (u_longlong_t)xattr);
--- a/usr/src/uts/common/fs/zfs/zfs_fuid.c Wed Mar 31 15:31:10 2010 -0600
+++ b/usr/src/uts/common/fs/zfs/zfs_fuid.c Wed Mar 31 15:46:12 2010 -0600
@@ -19,8 +19,7 @@
* CDDL HEADER END
*/
/*
- * Copyright 2010 Sun Microsystems, Inc. All rights reserved.
- * Use is subject to license terms.
+ * Copyright (c) 2007, 2010, Oracle and/or its affiliates. All rights reserved.
*/
#include <sys/zfs_context.h>
@@ -376,7 +375,7 @@
rw_enter(&zfsvfs->z_fuid_lock, RW_READER);
- if (zfsvfs->z_fuid_obj)
+ if (zfsvfs->z_fuid_obj || zfsvfs->z_fuid_dirty)
domain = zfs_fuid_idx_domain(&zfsvfs->z_fuid_idx, idx);
else
domain = nulldomain;
--- a/usr/src/uts/common/fs/zfs/zfs_sa.c Wed Mar 31 15:31:10 2010 -0600
+++ b/usr/src/uts/common/fs/zfs/zfs_sa.c Wed Mar 31 15:46:12 2010 -0600
@@ -19,8 +19,7 @@
* CDDL HEADER END
*/
/*
- * Copyright 2010 Sun Microsystems, Inc. All rights reserved.
- * Use is subject to license terms.
+ * Copyright (c) 2010, Oracle and/or its affiliates. All rights reserved.
*/
#include <sys/types.h>
@@ -289,8 +288,10 @@
else {
dmu_buf_t *dbp;
if (dmu_buf_hold(zfsvfs->z_os, zp->z_id, 0,
- FTAG, &dbp))
+ FTAG, &dbp)) {
+ kmem_free(slink, zp->z_size + 1);
return;
+ }
bcopy(dbp->db_data, slink, zp->z_size);
dmu_buf_rele(dbp, FTAG);
}
--- a/usr/src/uts/common/fs/zfs/zfs_znode.c Wed Mar 31 15:31:10 2010 -0600
+++ b/usr/src/uts/common/fs/zfs/zfs_znode.c Wed Mar 31 15:46:12 2010 -0600
@@ -19,8 +19,7 @@
* CDDL HEADER END
*/
/*
- * Copyright 2010 Sun Microsystems, Inc. All rights reserved.
- * Use is subject to license terms.
+ * Copyright (c) 2005, 2010, Oracle and/or its affiliates. All rights reserved.
*/
/* Portions Copyright 2007 Jeremy Teo */
@@ -987,12 +986,12 @@
(*zpp)->z_sa_hdl = sa_hdl;
}
+ (*zpp)->z_pflags = pflags;
+ (*zpp)->z_mode = mode;
+
if (vap->va_mask & AT_XVATTR)
zfs_xvattr_set(*zpp, (xvattr_t *)vap, tx);
- (*zpp)->z_pflags = pflags;
- (*zpp)->z_mode = mode;
-
if (obj_type == DMU_OT_ZNODE ||
acl_ids->z_aclp->z_version < ZFS_ACL_VERSION_FUID) {
err = zfs_aclset_common(*zpp, acl_ids->z_aclp, cr, tx);