diff usr/src/uts/common/fs/zfs/zfs_vfsops.c @ 5648:161f8007cab9

6521412 PSARC 2006/525: new boot sparc 6451467 bootadm update-archive does the wrong thing if interrupted 6477079 ability to pick up post bfu binaries from bfu PATH conflicts with sane scripting
author setje
date Fri, 07 Dec 2007 16:04:33 -0800
parents 504c84876fda
children 23e77aa611b1
line wrap: on
line diff
--- a/usr/src/uts/common/fs/zfs/zfs_vfsops.c	Fri Dec 07 15:46:44 2007 -0800
+++ b/usr/src/uts/common/fs/zfs/zfs_vfsops.c	Fri Dec 07 16:04:33 2007 -0800
@@ -859,6 +859,9 @@
 	znode_t *zp = NULL;
 	vnode_t *vp = NULL;
 	char *zfs_bootpath;
+#if defined(_OBP)
+	int proplen;
+#endif
 
 	ASSERT(vfsp);
 
@@ -870,6 +873,18 @@
 		if (zfsrootdone++)
 			return (EBUSY);
 
+#if defined(_OBP)
+		proplen = BOP_GETPROPLEN(bootops, "zfs-bootfs");
+		if (proplen == 0)
+			return (EIO);
+		zfs_bootpath = kmem_zalloc(proplen, KM_SLEEP);
+		if (BOP_GETPROP(bootops, "zfs-bootfs", zfs_bootpath) == -1) {
+			kmem_free(zfs_bootpath, proplen);
+			return (EIO);
+		}
+		error = parse_bootpath(zfs_bootpath, rootfs.bo_name);
+		kmem_free(zfs_bootpath, proplen);
+#else
 		if (ddi_prop_lookup_string(DDI_DEV_T_ANY, ddi_root_node(),
 		    DDI_PROP_DONTPASS, "zfs-bootfs", &zfs_bootpath) !=
 		    DDI_SUCCESS)
@@ -877,6 +892,7 @@
 
 		error = parse_bootpath(zfs_bootpath, rootfs.bo_name);
 		ddi_prop_free(zfs_bootpath);
+#endif
 
 		if (error)
 			return (error);