changeset 3863:d56571426115

6529406 zpool history needs to bump the on-disk version
author ek110237
date Tue, 20 Mar 2007 13:38:31 -0700
parents 86869f5c0e35
children 2ae506652d11
files usr/src/cmd/zpool/zpool_main.c usr/src/lib/libzfs/common/libzfs_pool.c usr/src/uts/common/fs/zfs/zfs_ioctl.c usr/src/uts/common/sys/fs/zfs.h
diffstat 4 files changed, 19 insertions(+), 2 deletions(-) [+]
line wrap: on
line diff
--- a/usr/src/cmd/zpool/zpool_main.c	Tue Mar 20 11:43:55 2007 -0700
+++ b/usr/src/cmd/zpool/zpool_main.c	Tue Mar 20 13:38:31 2007 -0700
@@ -3180,6 +3180,7 @@
 		    "(replicated metadata)\n"));
 		(void) printf(gettext(" 3   Hot spares and double parity "
 		    "RAID-Z\n"));
+		(void) printf(gettext(" 4   zpool history\n"));
 		(void) printf(gettext("\nFor more information on a particular "
 		    "version, including supported releases, see:\n\n"));
 		(void) printf("http://www.opensolaris.org/os/community/zfs/"
--- a/usr/src/lib/libzfs/common/libzfs_pool.c	Tue Mar 20 11:43:55 2007 -0700
+++ b/usr/src/lib/libzfs/common/libzfs_pool.c	Tue Mar 20 13:38:31 2007 -0700
@@ -1712,6 +1712,10 @@
 			return (zfs_error_fmt(hdl, EZFS_NOHISTORY,
 			    dgettext(TEXT_DOMAIN, "cannot get history for pool "
 			    "'%s'"), zhp->zpool_name));
+		case ENOTSUP:
+			return (zfs_error_fmt(hdl, EZFS_BADVERSION,
+			    dgettext(TEXT_DOMAIN, "cannot get history for pool "
+			    "'%s', pool must be upgraded"), zhp->zpool_name));
 		default:
 			return (zpool_standard_error_fmt(hdl, errno,
 			    dgettext(TEXT_DOMAIN,
--- a/usr/src/uts/common/fs/zfs/zfs_ioctl.c	Tue Mar 20 11:43:55 2007 -0700
+++ b/usr/src/uts/common/fs/zfs/zfs_ioctl.c	Tue Mar 20 13:38:31 2007 -0700
@@ -488,6 +488,11 @@
 	if ((error = spa_open(zc->zc_name, &spa, FTAG)) != 0)
 		return (error);
 
+	if (spa_version(spa) < ZFS_VERSION_ZPOOL_HISTORY) {
+		spa_close(spa, FTAG);
+		return (ENOTSUP);
+	}
+
 	hist_buf = kmem_alloc(size, KM_SLEEP);
 	if ((error = spa_history_get(spa, &zc->zc_history_offset,
 	    &zc->zc_history_len, hist_buf)) == 0) {
@@ -515,6 +520,11 @@
 	if ((error = spa_open(zc->zc_name, &spa, FTAG)) != 0)
 		return (error);
 
+	if (spa_version(spa) < ZFS_VERSION_ZPOOL_HISTORY) {
+		spa_close(spa, FTAG);
+		return (ENOTSUP);
+	}
+
 	/* add one for the NULL delimiter */
 	size++;
 	history_str = kmem_alloc(size, KM_SLEEP);
--- a/usr/src/uts/common/sys/fs/zfs.h	Tue Mar 20 11:43:55 2007 -0700
+++ b/usr/src/uts/common/sys/fs/zfs.h	Tue Mar 20 13:38:31 2007 -0700
@@ -125,8 +125,9 @@
 #define	ZFS_VERSION_1			1ULL
 #define	ZFS_VERSION_2			2ULL
 #define	ZFS_VERSION_3			3ULL
-#define	ZFS_VERSION			ZFS_VERSION_3
-#define	ZFS_VERSION_STRING		"3"
+#define	ZFS_VERSION_4			4ULL
+#define	ZFS_VERSION			ZFS_VERSION_4
+#define	ZFS_VERSION_STRING		"4"
 
 /*
  * Symbolic names for the changes that caused a ZFS_VERSION switch.
@@ -146,6 +147,7 @@
 #define	ZFS_VERSION_BPLIST_ACCOUNT	ZFS_VERSION_3
 #define	ZFS_VERSION_RAIDZ_DEFLATE	ZFS_VERSION_3
 #define	ZFS_VERSION_DNODE_BYTES		ZFS_VERSION_3
+#define	ZFS_VERSION_ZPOOL_HISTORY	ZFS_VERSION_4
 
 /*
  * The following are configuration names used in the nvlist describing a pool's