From f65fbee1e7a370db24e1aaa2b7bea7865938b9ae Mon Sep 17 00:00:00 2001 From: Jerry Jelinek Date: Thu, 30 Aug 2018 13:13:30 +0000 Subject: OpenZFS 9700 - ZFS resilvered mirror does not balance reads Authored by: Jerry Jelinek Reviewed by: Toomas Soome Reviewed by: Sanjay Nadkarni Reviewed by: George Wilson Reviewed-by: George Melikov Reviewed-by: Richard Elling Approved by: Matthew Ahrens Ported-by: Brian Behlendorf OpenZFS-issue: https://illumos.org/issues/9700 OpenZFS-commit: https://github.com/openzfs/openzfs/commit/82f63c3c Closes #7973 --- module/zfs/spa.c | 4 ++++ 1 file changed, 4 insertions(+) (limited to 'module/zfs/spa.c') diff --git a/module/zfs/spa.c b/module/zfs/spa.c index eaca2d29e..ad8000914 100644 --- a/module/zfs/spa.c +++ b/module/zfs/spa.c @@ -28,6 +28,7 @@ * Copyright (c) 2014 Integros [integros.com] * Copyright 2016 Toomas Soome * Copyright (c) 2016 Actifio, Inc. All rights reserved. + * Copyright 2018 Joyent, Inc. * Copyright (c) 2017 Datto Inc. * Copyright 2017 Joyent, Inc. * Copyright (c) 2017, Intel Corporation. @@ -6703,6 +6704,7 @@ spa_vdev_resilver_done_hunt(vdev_t *vd) /* * Check for a completed resilver with the 'unspare' flag set. + * Also potentially update faulted state. */ if (vd->vdev_ops == &vdev_spare_ops) { vdev_t *first = vd->vdev_child[0]; @@ -6724,6 +6726,8 @@ spa_vdev_resilver_done_hunt(vdev_t *vd) !vdev_dtl_required(oldvd)) return (oldvd); + vdev_propagate_state(vd); + /* * If there are more than two spares attached to a disk, * and those spares are not required, then we want to -- cgit v1.2.3