diff options
author | loli10K <[email protected]> | 2020-01-07 00:40:06 +0100 |
---|---|---|
committer | Brian Behlendorf <[email protected]> | 2020-01-06 15:40:06 -0800 |
commit | c24fa4b19a1b117945f3235e014f926fe93b0c5a (patch) | |
tree | 37178dc7c410829ef81f1f2c61c7df44d6d41710 /module/zcommon | |
parent | bc9cef11fddfe8e6e240477084a49f4bad1fb4f3 (diff) |
Fix "zpool add -n" for dedup, special and log devices
For dedup, special and log devices "zpool add -n" does not print
correctly their vdev type:
~# zpool add -n pool dedup /tmp/dedup special /tmp/special log /tmp/log
would update 'pool' to the following configuration:
pool
/tmp/normal
/tmp/dedup
/tmp/special
/tmp/log
This could lead storage administrators to modify their ZFS pools to
unexpected and unintended vdev configurations.
Reviewed-by: Brian Behlendorf <[email protected]>
Signed-off-by: loli10K <[email protected]>
Closes #9783
Closes #9390
Diffstat (limited to 'module/zcommon')
-rw-r--r-- | module/zcommon/zfs_comutil.c | 8 |
1 files changed, 6 insertions, 2 deletions
diff --git a/module/zcommon/zfs_comutil.c b/module/zcommon/zfs_comutil.c index a3ff7d8e6..1cec60ac1 100644 --- a/module/zcommon/zfs_comutil.c +++ b/module/zcommon/zfs_comutil.c @@ -68,7 +68,7 @@ zfs_allocatable_devs(nvlist_t *nv) * Are there special vdevs? */ boolean_t -zfs_special_devs(nvlist_t *nv) +zfs_special_devs(nvlist_t *nv, char *type) { char *bias; uint_t c; @@ -84,7 +84,11 @@ zfs_special_devs(nvlist_t *nv) &bias) == 0) { if (strcmp(bias, VDEV_ALLOC_BIAS_SPECIAL) == 0 || strcmp(bias, VDEV_ALLOC_BIAS_DEDUP) == 0) { - return (B_TRUE); + if (type != NULL && strcmp(bias, type) == 0) { + return (B_TRUE); + } else if (type == NULL) { + return (B_TRUE); + } } } } |