diff options
Diffstat (limited to 'module/zfs/vdev.c')
-rw-r--r-- | module/zfs/vdev.c | 24 |
1 files changed, 6 insertions, 18 deletions
diff --git a/module/zfs/vdev.c b/module/zfs/vdev.c index 40293ec1f..caf92899d 100644 --- a/module/zfs/vdev.c +++ b/module/zfs/vdev.c @@ -23,6 +23,8 @@ * Copyright (c) 2005, 2010, Oracle and/or its affiliates. All rights reserved. * Copyright (c) 2011, 2015 by Delphix. All rights reserved. * Copyright 2015 Nexenta Systems, Inc. All rights reserved. + * Copyright (c) 2014 Integros [integros.com] + * Copyright 2016 Toomas Soome <[email protected]> */ #include <sys/zfs_context.h> @@ -3542,36 +3544,22 @@ vdev_set_state(vdev_t *vd, boolean_t isopen, vdev_state_t state, vdev_aux_t aux) /* * Check the vdev configuration to ensure that it's capable of supporting - * a root pool. + * a root pool. We do not support partial configuration. */ boolean_t vdev_is_bootable(vdev_t *vd) { -#if defined(__sun__) || defined(__sun) - /* - * Currently, we do not support RAID-Z or partial configuration. - * In addition, only a single top-level vdev is allowed and none of the - * leaves can be wholedisks. - */ - int c; - if (!vd->vdev_ops->vdev_op_leaf) { - char *vdev_type = vd->vdev_ops->vdev_op_type; + const char *vdev_type = vd->vdev_ops->vdev_op_type; - if (strcmp(vdev_type, VDEV_TYPE_ROOT) == 0 && - vd->vdev_children > 1) { + if (strcmp(vdev_type, VDEV_TYPE_MISSING) == 0) return (B_FALSE); - } else if (strcmp(vdev_type, VDEV_TYPE_RAIDZ) == 0 || - strcmp(vdev_type, VDEV_TYPE_MISSING) == 0) { - return (B_FALSE); - } } - for (c = 0; c < vd->vdev_children; c++) { + for (int c = 0; c < vd->vdev_children; c++) { if (!vdev_is_bootable(vd->vdev_child[c])) return (B_FALSE); } -#endif /* __sun__ || __sun */ return (B_TRUE); } |