svn commit: r212670 - in stable/8: cddl/contrib/opensolaris/lib/libzfs/common sys/cddl/contrib/opensolaris/uts/common/fs/zfs

Martin Matuska mm at FreeBSD.org
Wed Sep 15 16:10:38 UTC 2010


Author: mm
Date: Wed Sep 15 16:10:38 2010
New Revision: 212670
URL: http://svn.freebsd.org/changeset/base/212670

Log:
  MFC r210398:
  
  Enable fake resolving of SMB RIDs by using nulldomain and UID_NOBODY
  - fixes panics when Solaris/OpenSolaris pools that contain files
  uploaded with the SMB protocol are accessed
  
  Enable seting/unsetting the sharesmb property (dummy action)
  - allows users who import pools from Solaris/Opensolaris to unset
  the sharesmb property and get rid of annoying messages
  
  PR:		kern/145778, kern/148709
  Approved by:	pjd, delphij (mentor))

Modified:
  stable/8/cddl/contrib/opensolaris/lib/libzfs/common/libzfs_dataset.c
  stable/8/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/zfs_fuid.c
Directory Properties:
  stable/8/cddl/contrib/opensolaris/   (props changed)
  stable/8/sys/   (props changed)
  stable/8/sys/amd64/include/xen/   (props changed)
  stable/8/sys/cddl/contrib/opensolaris/   (props changed)
  stable/8/sys/contrib/dev/acpica/   (props changed)
  stable/8/sys/contrib/pf/   (props changed)
  stable/8/sys/dev/xen/xenpci/   (props changed)

Modified: stable/8/cddl/contrib/opensolaris/lib/libzfs/common/libzfs_dataset.c
==============================================================================
--- stable/8/cddl/contrib/opensolaris/lib/libzfs/common/libzfs_dataset.c	Wed Sep 15 16:05:51 2010	(r212669)
+++ stable/8/cddl/contrib/opensolaris/lib/libzfs/common/libzfs_dataset.c	Wed Sep 15 16:10:38 2010	(r212670)
@@ -1265,7 +1265,6 @@ zfs_prop_set(zfs_handle_t *zhp, const ch
 	case ZFS_PROP_XATTR:
 	case ZFS_PROP_VSCAN:
 	case ZFS_PROP_NBMAND:
-	case ZFS_PROP_SHARESMB:
 		(void) snprintf(errbuf, sizeof (errbuf),
 		    "property '%s' not supported on FreeBSD", propname);
 		ret = zfs_error(hdl, EZFS_PERM, errbuf);

Modified: stable/8/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/zfs_fuid.c
==============================================================================
--- stable/8/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/zfs_fuid.c	Wed Sep 15 16:05:51 2010	(r212669)
+++ stable/8/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/zfs_fuid.c	Wed Sep 15 16:10:38 2010	(r212670)
@@ -410,7 +410,7 @@ zfs_fuid_map_id(zfsvfs_t *zfsvfs, uint64
 	domain = zfs_fuid_find_by_idx(zfsvfs, index);
 	ASSERT(domain != NULL);
 
-#ifdef TODO
+#ifdef sun
 	if (type == ZFS_OWNER || type == ZFS_ACE_USER) {
 		(void) kidmap_getuidbysid(crgetzone(cr), domain,
 		    FUID_RID(fuid), &id);
@@ -418,9 +418,9 @@ zfs_fuid_map_id(zfsvfs_t *zfsvfs, uint64
 		(void) kidmap_getgidbysid(crgetzone(cr), domain,
 		    FUID_RID(fuid), &id);
 	}
-#else
-	panic(__func__);
-#endif
+#else	/* sun */
+	id = UID_NOBODY;
+#endif	/* sun */
 	return (id);
 }
 
@@ -514,21 +514,21 @@ zfs_fuid_create_cred(zfsvfs_t *zfsvfs, z
 	if (!zfsvfs->z_use_fuids || !IS_EPHEMERAL(id))
 		return ((uint64_t)id);
 
-#ifdef TODO
+#ifdef sun
 	ksid = crgetsid(cr, (type == ZFS_OWNER) ? KSID_OWNER : KSID_GROUP);
 
 	VERIFY(ksid != NULL);
 	rid = ksid_getrid(ksid);
 	domain = ksid_getdomain(ksid);
-
+#else	/* sun */
+	rid = UID_NOBODY;
+	domain = nulldomain;
+#endif	/* sun */
 	idx = zfs_fuid_find_by_domain(zfsvfs, domain, &kdomain, B_TRUE);
 
 	zfs_fuid_node_add(fuidp, kdomain, rid, idx, id, type);
 
 	return (FUID_ENCODE(idx, rid));
-#else
-	panic(__func__);
-#endif
 }
 
 /*
@@ -597,7 +597,7 @@ zfs_fuid_create(zfsvfs_t *zfsvfs, uint64
 		};
 		domain = fuidp->z_domain_table[idx -1];
 	} else {
-#ifdef TODO
+#ifdef sun
 		if (type == ZFS_OWNER || type == ZFS_ACE_USER)
 			status = kidmap_getsidbyuid(crgetzone(cr), id,
 			    &domain, &rid);
@@ -606,6 +606,7 @@ zfs_fuid_create(zfsvfs_t *zfsvfs, uint64
 			    &domain, &rid);
 
 		if (status != 0) {
+#endif	/* sun */
 			/*
 			 * When returning nobody we will need to
 			 * make a dummy fuid table entry for logging
@@ -613,10 +614,9 @@ zfs_fuid_create(zfsvfs_t *zfsvfs, uint64
 			 */
 			rid = UID_NOBODY;
 			domain = nulldomain;
+#ifdef sun
 		}
-#else
-		panic(__func__);
-#endif
+#endif	/* sun */
 	}
 
 	idx = zfs_fuid_find_by_domain(zfsvfs, domain, &kdomain, B_TRUE);


More information about the svn-src-stable-8 mailing list