summaryrefslogtreecommitdiffstats
path: root/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/spa.c
diff options
context:
space:
mode:
authordelphij <delphij@FreeBSD.org>2013-08-08 23:38:31 +0000
committerdelphij <delphij@FreeBSD.org>2013-08-08 23:38:31 +0000
commitccc3c4970e788379d0e1e21c2a8a5a56b6fb6d74 (patch)
tree993a1b0050c70f3cb69e780b9b716386ebc301ae /sys/cddl/contrib/opensolaris/uts/common/fs/zfs/spa.c
parenta73007b025495ca781390791c042c2d7ac380545 (diff)
downloadFreeBSD-src-ccc3c4970e788379d0e1e21c2a8a5a56b6fb6d74.zip
FreeBSD-src-ccc3c4970e788379d0e1e21c2a8a5a56b6fb6d74.tar.gz
MFV r254079:
Illumos ZFS issues: 3957 ztest should update the cachefile before killing itself 3958 multiple scans can lead to partial resilvering 3959 ddt entries are not always resilvered 3960 dsl_scan can skip over dedup-ed blocks if physical birth != logical birth 3961 freed gang blocks are not resilvered and can cause pool to suspend 3962 ztest should print out zfs debug buffer before exiting
Diffstat (limited to 'sys/cddl/contrib/opensolaris/uts/common/fs/zfs/spa.c')
-rw-r--r--sys/cddl/contrib/opensolaris/uts/common/fs/zfs/spa.c11
1 files changed, 3 insertions, 8 deletions
diff --git a/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/spa.c b/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/spa.c
index 6ea6938..c9374ad 100644
--- a/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/spa.c
+++ b/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/spa.c
@@ -4633,7 +4633,7 @@ spa_vdev_attach(spa_t *spa, uint64_t guid, nvlist_t *nvroot, int replacing)
}
/* mark the device being resilvered */
- newvd->vdev_resilvering = B_TRUE;
+ newvd->vdev_resilver_txg = txg;
/*
* If the parent is not a mirror, or if we're replacing, insert the new
@@ -5497,13 +5497,6 @@ spa_vdev_resilver_done_hunt(vdev_t *vd)
return (oldvd);
}
- if (vd->vdev_resilvering && vdev_dtl_empty(vd, DTL_MISSING) &&
- vdev_dtl_empty(vd, DTL_OUTAGE)) {
- ASSERT(vd->vdev_ops->vdev_op_leaf);
- vd->vdev_resilvering = B_FALSE;
- vdev_config_dirty(vd->vdev_top);
- }
-
/*
* Check for a completed replacement. We always consider the first
* vdev in the list to be the oldest vdev, and the last one to be
@@ -5593,6 +5586,8 @@ spa_vdev_resilver_done(spa_t *spa)
ASSERT(pvd->vdev_ops == &vdev_replacing_ops);
sguid = ppvd->vdev_child[1]->vdev_guid;
}
+ ASSERT(vd->vdev_resilver_txg == 0 || !vdev_dtl_required(vd));
+
spa_config_exit(spa, SCL_ALL, FTAG);
if (spa_vdev_detach(spa, guid, pguid, B_TRUE) != 0)
return;
OpenPOWER on IntegriCloud