summaryrefslogtreecommitdiffstats
path: root/sys/boot/zfs
diff options
context:
space:
mode:
authorpjd <pjd@FreeBSD.org>2010-09-09 21:15:16 +0000
committerpjd <pjd@FreeBSD.org>2010-09-09 21:15:16 +0000
commit87570d6f03a8ba3c5e9538377d23a4aaae3439a0 (patch)
treef8cea7843e84a2d5daf3fe0ddb7c2023b8fd21e1 /sys/boot/zfs
parent42286dca3aa7c8530567e7693a4ec62e73430ea0 (diff)
downloadFreeBSD-src-87570d6f03a8ba3c5e9538377d23a4aaae3439a0.zip
FreeBSD-src-87570d6f03a8ba3c5e9538377d23a4aaae3439a0.tar.gz
Remove duplicated code.
MFC after: 2 weeks
Diffstat (limited to 'sys/boot/zfs')
-rw-r--r--sys/boot/zfs/zfsimpl.c29
1 files changed, 9 insertions, 20 deletions
diff --git a/sys/boot/zfs/zfsimpl.c b/sys/boot/zfs/zfsimpl.c
index e645eba..e7ed218 100644
--- a/sys/boot/zfs/zfsimpl.c
+++ b/sys/boot/zfs/zfsimpl.c
@@ -488,7 +488,16 @@ vdev_init_from_nvlist(const unsigned char *nvlist, vdev_t **vdevp, int is_newer)
vdev->v_name = strdup(type);
}
}
+ } else {
+ is_new = 0;
+ }
+ if (is_new || is_newer) {
+ /*
+ * This is either new vdev or we've already seen this vdev,
+ * but from an older vdev label, so let's refresh its state
+ * from the newer label.
+ */
if (is_offline)
vdev->v_state = VDEV_STATE_OFFLINE;
else if (is_removed)
@@ -499,26 +508,6 @@ vdev_init_from_nvlist(const unsigned char *nvlist, vdev_t **vdevp, int is_newer)
vdev->v_state = VDEV_STATE_DEGRADED;
else
vdev->v_state = VDEV_STATE_HEALTHY;
- } else {
- is_new = 0;
-
- if (is_newer) {
- /*
- * We've already seen this vdev, but from an older
- * vdev label, so let's refresh its state from the
- * newer label.
- */
- if (is_offline)
- vdev->v_state = VDEV_STATE_OFFLINE;
- else if (is_removed)
- vdev->v_state = VDEV_STATE_REMOVED;
- else if (is_faulted)
- vdev->v_state = VDEV_STATE_FAULTED;
- else if (is_degraded)
- vdev->v_state = VDEV_STATE_DEGRADED;
- else
- vdev->v_state = VDEV_STATE_HEALTHY;
- }
}
rc = nvlist_find(nvlist, ZPOOL_CONFIG_CHILDREN,
OpenPOWER on IntegriCloud