summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorek110237 <none@none>2007-03-20 13:38:31 -0700
committerek110237 <none@none>2007-03-20 13:38:31 -0700
commitd7306b64c847d897abb9ece8624fca9cf28d358f (patch)
treed3ec610008258452cb458a6175d0a48b42d80fc4
parentf5a18a30a06b60eec275589214da939abbaa99d9 (diff)
downloadillumos-joyent-d7306b64c847d897abb9ece8624fca9cf28d358f.tar.gz
6529406 zpool history needs to bump the on-disk version
-rw-r--r--usr/src/cmd/zpool/zpool_main.c1
-rw-r--r--usr/src/lib/libzfs/common/libzfs_pool.c4
-rw-r--r--usr/src/uts/common/fs/zfs/zfs_ioctl.c10
-rw-r--r--usr/src/uts/common/sys/fs/zfs.h6
4 files changed, 19 insertions, 2 deletions
diff --git a/usr/src/cmd/zpool/zpool_main.c b/usr/src/cmd/zpool/zpool_main.c
index 83ae9349ec..aa4dc7487d 100644
--- a/usr/src/cmd/zpool/zpool_main.c
+++ b/usr/src/cmd/zpool/zpool_main.c
@@ -3180,6 +3180,7 @@ zpool_do_upgrade(int argc, char **argv)
"(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/"
diff --git a/usr/src/lib/libzfs/common/libzfs_pool.c b/usr/src/lib/libzfs/common/libzfs_pool.c
index 0e173bc019..0f76a53b57 100644
--- a/usr/src/lib/libzfs/common/libzfs_pool.c
+++ b/usr/src/lib/libzfs/common/libzfs_pool.c
@@ -1712,6 +1712,10 @@ get_history(zpool_handle_t *zhp, char *buf, uint64_t *off, uint64_t *len)
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,
diff --git a/usr/src/uts/common/fs/zfs/zfs_ioctl.c b/usr/src/uts/common/fs/zfs/zfs_ioctl.c
index 1178dba1eb..48c50f9d4c 100644
--- a/usr/src/uts/common/fs/zfs/zfs_ioctl.c
+++ b/usr/src/uts/common/fs/zfs/zfs_ioctl.c
@@ -488,6 +488,11 @@ zfs_ioc_pool_get_history(zfs_cmd_t *zc)
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 @@ zfs_ioc_pool_log_history(zfs_cmd_t *zc)
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);
diff --git a/usr/src/uts/common/sys/fs/zfs.h b/usr/src/uts/common/sys/fs/zfs.h
index 276e1fd54c..f25c6efe0e 100644
--- a/usr/src/uts/common/sys/fs/zfs.h
+++ b/usr/src/uts/common/sys/fs/zfs.h
@@ -125,8 +125,9 @@ extern zfs_prop_t zfs_prop_iter(zfs_prop_f, void *, boolean_t);
#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 @@ extern zfs_prop_t zfs_prop_iter(zfs_prop_f, void *, boolean_t);
#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