From 64ad2b26e24ae9f70d3a41c786144552c2e6ac12 Mon Sep 17 00:00:00 2001 From: Brian Behlendorf Date: Thu, 14 Nov 2013 14:22:52 -0800 Subject: [PATCH] Remove the slog restriction on bootfs pools Under Linux this restriction does not apply because we have access to all the required devices. Signed-off-by: Brian Behlendorf Closes #1631 --- lib/libzfs/libzfs_pool.c | 7 ------- module/zfs/zfs_ioctl.c | 25 +------------------------ 2 files changed, 1 insertion(+), 31 deletions(-) diff --git a/lib/libzfs/libzfs_pool.c b/lib/libzfs/libzfs_pool.c index a221f9fc7..ccaa86bea 100644 --- a/lib/libzfs/libzfs_pool.c +++ b/lib/libzfs/libzfs_pool.c @@ -1409,13 +1409,6 @@ zpool_add(zpool_handle_t *zhp, nvlist_t *nvroot) (void) zfs_error(hdl, EZFS_BADVERSION, msg); break; - case EDOM: - zfs_error_aux(hdl, dgettext(TEXT_DOMAIN, - "root pool can not have multiple vdevs" - " or separate logs")); - (void) zfs_error(hdl, EZFS_POOL_NOTSUP, msg); - break; - case ENOTBLK: zfs_error_aux(hdl, dgettext(TEXT_DOMAIN, "cache device must be a disk or disk slice")); diff --git a/module/zfs/zfs_ioctl.c b/module/zfs/zfs_ioctl.c index f541181e6..52b072a23 100644 --- a/module/zfs/zfs_ioctl.c +++ b/module/zfs/zfs_ioctl.c @@ -1751,8 +1751,7 @@ zfs_ioc_vdev_add(zfs_cmd_t *zc) { spa_t *spa; int error; - nvlist_t *config, **l2cache, **spares; - uint_t nl2cache = 0, nspares = 0; + nvlist_t *config; error = spa_open(zc->zc_name, &spa, FTAG); if (error != 0) @@ -1760,28 +1759,6 @@ zfs_ioc_vdev_add(zfs_cmd_t *zc) error = get_nvlist(zc->zc_nvlist_conf, zc->zc_nvlist_conf_size, zc->zc_iflags, &config); - (void) nvlist_lookup_nvlist_array(config, ZPOOL_CONFIG_L2CACHE, - &l2cache, &nl2cache); - - (void) nvlist_lookup_nvlist_array(config, ZPOOL_CONFIG_SPARES, - &spares, &nspares); - - /* - * A root pool with concatenated devices is not supported. - * Thus, can not add a device to a root pool. - * - * Intent log device can not be added to a rootpool because - * during mountroot, zil is replayed, a seperated log device - * can not be accessed during the mountroot time. - * - * l2cache and spare devices are ok to be added to a rootpool. - */ - if (spa_bootfs(spa) != 0 && nl2cache == 0 && nspares == 0) { - nvlist_free(config); - spa_close(spa, FTAG); - return (SET_ERROR(EDOM)); - } - if (error == 0) { error = spa_vdev_add(spa, config); nvlist_free(config);