mirror of
https://git.proxmox.com/git/mirror_zfs.git
synced 2026-05-26 12:12:13 +03:00
3956 ::vdev -r should work with pipelines 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 Reviewed by: Matthew Ahrens <mahrens@delphix.com> Reviewed by: Adam Leventhal <ahl@delphix.com> Approved by: Richard Lowe <richlowe@richlowe.net> References: https://www.illumos.org/issues/3956 https://www.illumos.org/issues/3957 https://www.illumos.org/issues/3958 https://www.illumos.org/issues/3959 https://www.illumos.org/issues/3960 https://www.illumos.org/issues/3961 https://www.illumos.org/issues/3962 illumos/illumos-gate@b4952e17e8 Ported-by: Richard Yao <ryao@gentoo.org> Signed-off-by: Brian Behlendorf <behlendorf1@llnl.gov> Porting notes: 1. zfs_dbgmsg_print() is only used in userland. Since we do not have mdb on Linux, it does not make sense to make it available in the kernel. This means that a build failure will occur if any future kernel patch depends on it. However, that is unlikely given that this functionality was added to support zdb. 2. zfs_dbgmsg_print() is only invoked for -VVV or greater log levels. This preserves the existing behavior of minimal noise when running with -V, and -VV. 3. In vdev_config_generate() the call to nvlist_alloc() was not changed to fnvlist_alloc() because we must pass KM_PUSHPAGE in the txg_sync context.
This commit is contained in:
committed by
Brian Behlendorf
parent
621dd7bb2c
commit
5d1f7fb647
+3
-8
@@ -4509,7 +4509,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
|
||||
@@ -5370,13 +5370,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
|
||||
@@ -5466,6 +5459,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;
|
||||
|
||||
Reference in New Issue
Block a user