]> git.proxmox.com Git - mirror_zfs.git/commitdiff
OpenZFS 8897 - zpool online -e fails assertion when run on non-leaf vdevs
authorYuri Pankov <yuri.pankov@nexenta.com>
Mon, 11 Dec 2017 07:11:25 +0000 (10:11 +0300)
committerBrian Behlendorf <behlendorf1@llnl.gov>
Thu, 11 Jan 2018 21:52:03 +0000 (13:52 -0800)
Authored by: Yuri Pankov <yuri.pankov@nexenta.com>
Reviewed by: Toomas Soome <tsoome@me.com>
Reviewed by: Igor Kozhukhov <igor@dilos.org>
Reviewed-by: George Melikov <mail@gmelikov.ru>
Approved by: Dan McDonald <danmcd@joyent.com>
Ported-by: Brian Behlendorf <behlendorf1@llnl.gov>
OpenZFS-issue: https://www.illumos.org/issues/8897
OpenZFS-commit: https://github.com/openzfs/openzfs/commit/9a551dd645
Closes #7030

lib/libzfs/libzfs_pool.c

index 46fb99aff24c0b33eacdb8938a4cbef37ca18ab5..560d4cd281e12f5a559a346f655b5f438853364a 100644 (file)
@@ -2516,6 +2516,7 @@ zpool_vdev_online(zpool_handle_t *zhp, const char *path, int flags,
 {
        zfs_cmd_t zc = {"\0"};
        char msg[1024];
+       char *pathname;
        nvlist_t *tgt;
        boolean_t avail_spare, l2cache, islog;
        libzfs_handle_t *hdl = zhp->zpool_hdl;
@@ -2539,8 +2540,9 @@ zpool_vdev_online(zpool_handle_t *zhp, const char *path, int flags,
        if (avail_spare)
                return (zfs_error(hdl, EZFS_ISSPARE, msg));
 
-       if (flags & ZFS_ONLINE_EXPAND ||
-           zpool_get_prop_int(zhp, ZPOOL_PROP_AUTOEXPAND, NULL)) {
+       if ((flags & ZFS_ONLINE_EXPAND ||
+           zpool_get_prop_int(zhp, ZPOOL_PROP_AUTOEXPAND, NULL)) &&
+           nvlist_lookup_string(tgt, ZPOOL_CONFIG_PATH, &pathname) == 0) {
                uint64_t wholedisk = 0;
 
                (void) nvlist_lookup_uint64(tgt, ZPOOL_CONFIG_WHOLE_DISK,