From: George Wilson Date: Fri, 4 Oct 2013 22:13:23 +0000 (-0800) Subject: Illumos #4168, #4169, #4170 X-Git-Tag: zfs-0.7.12~1939 X-Git-Url: https://git.proxmox.com/?a=commitdiff_plain;h=43a696ed38cae25ec2d7b6466ab4a99eb86df7bd;p=mirror_zfs.git Illumos #4168, #4169, #4170 4168 ztest assertion failure in dbuf_undirty 4169 verbatim import causes zdb to segfault 4170 zhack leaves pool in ACTIVE state Reviewed by: Adam Leventhal Reviewed by: Eric Schrock Reviewed by: Matthew Ahrens Approved by: Dan McDonald References: https://www.illumos.org/issues/4168 https://www.illumos.org/issues/4169 https://www.illumos.org/issues/4170 illumos/illumos-gate@7fdd916c474ea52896c671bbe7b56ba34a1ca132 Ported-by: Richard Yao Signed-off-by: Brian Behlendorf Issue #1775 --- diff --git a/module/zfs/metaslab.c b/module/zfs/metaslab.c index f01a8893e..f49a8adc6 100644 --- a/module/zfs/metaslab.c +++ b/module/zfs/metaslab.c @@ -117,6 +117,11 @@ int metaslab_prefetch_limit = SPA_DVAS_PER_BP; */ int metaslab_smo_bonus_pct = 150; +/* + * Should we be willing to write data to degraded vdevs? + */ +boolean_t zfs_write_to_degraded = B_FALSE; + /* * ========================================================================== * Metaslab classes @@ -1725,10 +1730,13 @@ top: /* * Avoid writing single-copy data to a failing vdev + * unless the user instructs us that it is okay. */ if ((vd->vdev_stat.vs_write_errors > 0 || vd->vdev_state < VDEV_STATE_HEALTHY) && - d == 0 && dshift == 3) { + d == 0 && dshift == 3 && + !(zfs_write_to_degraded && vd->vdev_state == + VDEV_STATE_DEGRADED)) { all_zero = B_FALSE; goto next; }