aboutsummaryrefslogtreecommitdiffstats
path: root/module/zfs/vdev_root.c
diff options
context:
space:
mode:
authorGeorge Amanakis <[email protected]>2020-05-06 13:32:28 -0400
committerGitHub <[email protected]>2020-05-06 10:32:28 -0700
commit1b664952ae34d28c0408c20947f8aa5420c4ab63 (patch)
treeb802421507dee5ff43acb4c3fd550a2770e74036 /module/zfs/vdev_root.c
parentddc7a2dd3b099c280b4f3ed978f16fa6bd7012c0 (diff)
Enable splitting mirrors with indirect vdevs
When a top-level vdev is removed from a pool it is converted to an indirect vdev. Until now splitting such mirrored pools was not possible with zpool split. This patch enables handling of indirect vdevs and splitting of those pools with zpool split. Reviewed-by: Matthew Ahrens <[email protected]> Reviewed by: Brian Behlendorf <[email protected]> Signed-off-by: George Amanakis <[email protected]> Closes #10283
Diffstat (limited to 'module/zfs/vdev_root.c')
-rw-r--r--module/zfs/vdev_root.c3
1 files changed, 2 insertions, 1 deletions
diff --git a/module/zfs/vdev_root.c b/module/zfs/vdev_root.c
index 7170f7013..ce79f7c73 100644
--- a/module/zfs/vdev_root.c
+++ b/module/zfs/vdev_root.c
@@ -98,7 +98,8 @@ vdev_root_open(vdev_t *vd, uint64_t *asize, uint64_t *max_asize,
for (int c = 0; c < vd->vdev_children; c++) {
vdev_t *cvd = vd->vdev_child[c];
- if (cvd->vdev_open_error && !cvd->vdev_islog) {
+ if (cvd->vdev_open_error && !cvd->vdev_islog &&
+ cvd->vdev_ops != &vdev_indirect_ops) {
lasterror = cvd->vdev_open_error;
numerrors++;
}