6366731 zfs and gcc don't get along anymore
6367359 'zpool offline' fails, cannot offline device: device not in pool
--- a/usr/src/uts/common/fs/zfs/dbuf.c Sun Jan 01 02:57:51 2006 -0800
+++ b/usr/src/uts/common/fs/zfs/dbuf.c Sun Jan 01 19:39:54 2006 -0800
@@ -20,7 +20,7 @@
* CDDL HEADER END
*/
/*
- * Copyright 2005 Sun Microsystems, Inc. All rights reserved.
+ * Copyright 2006 Sun Microsystems, Inc. All rights reserved.
* Use is subject to license terms.
*/
@@ -1791,8 +1791,9 @@
for (i = 0; i < (1 << epbs); i++) {
if (!BP_IS_HOLE(&bplist[i])) {
panic("data past EOF: "
- "db=%p level=%d id=%lld i=%d\n",
- db, db->db_level, db->db_blkid, i);
+ "db=%p level=%d id=%llu i=%d\n",
+ db, db->db_level,
+ (u_longlong_t)db->db_blkid, i);
}
}
mutex_exit(&db->db_mtx);
--- a/usr/src/uts/common/fs/zfs/dnode_sync.c Sun Jan 01 02:57:51 2006 -0800
+++ b/usr/src/uts/common/fs/zfs/dnode_sync.c Sun Jan 01 19:39:54 2006 -0800
@@ -20,7 +20,7 @@
* CDDL HEADER END
*/
/*
- * Copyright 2005 Sun Microsystems, Inc. All rights reserved.
+ * Copyright 2006 Sun Microsystems, Inc. All rights reserved.
* Use is subject to license terms.
*/
@@ -528,7 +528,7 @@
if (!(off < dn->dn_phys->dn_maxblkid ||
dn->dn_phys->dn_maxblkid == 0 ||
dnode_next_offset(dn, FALSE, &off, 1, 1) == ESRCH))
- panic("data after EOF: off=%lld\n", off);
+ panic("data after EOF: off=%llu\n", (u_longlong_t)off);
dn->dn_dirtyblksz[txgoff] = 0;
--- a/usr/src/uts/common/fs/zfs/vdev.c Sun Jan 01 02:57:51 2006 -0800
+++ b/usr/src/uts/common/fs/zfs/vdev.c Sun Jan 01 19:39:54 2006 -0800
@@ -20,7 +20,7 @@
* CDDL HEADER END
*/
/*
- * Copyright 2005 Sun Microsystems, Inc. All rights reserved.
+ * Copyright 2006 Sun Microsystems, Inc. All rights reserved.
* Use is subject to license terms.
*/
@@ -143,8 +143,19 @@
int c;
vdev_t *mvd;
- if (vd->vdev_path != NULL && strcmp(path, vd->vdev_path) == 0)
- return (vd);
+ if (vd->vdev_path != NULL) {
+ if (vd->vdev_wholedisk == 1) {
+ /*
+ * For whole disks, the internal path has 's0', but the
+ * path passed in by the user doesn't.
+ */
+ if (strlen(path) == strlen(vd->vdev_path) - 2 &&
+ strncmp(path, vd->vdev_path, strlen(path)) == 0)
+ return (vd);
+ } else if (strcmp(path, vd->vdev_path) == 0) {
+ return (vd);
+ }
+ }
for (c = 0; c < vd->vdev_children; c++)
if ((mvd = vdev_lookup_by_path(vd->vdev_child[c], path)) !=