From 9dc3941c735ef88de46e850f745aa556d3a071a5 Mon Sep 17 00:00:00 2001 From: =?utf8?q?Sa=C5=A1o=20Kiselkov?= Date: Tue, 5 Feb 2013 11:15:10 -0800 Subject: [PATCH] 3507 Tunable to allow block allocation even on degraded vdevs Reviewed by: George Wilson Reviewed by: Matthew Ahrens Approved by: Christopher Siden --- usr/src/uts/common/fs/zfs/metaslab.c | 11 ++++++++++- 1 file changed, 10 insertions(+), 1 deletion(-) diff --git a/usr/src/uts/common/fs/zfs/metaslab.c b/usr/src/uts/common/fs/zfs/metaslab.c index 6449788c1c..ceb7c6fa57 100644 --- a/usr/src/uts/common/fs/zfs/metaslab.c +++ b/usr/src/uts/common/fs/zfs/metaslab.c @@ -21,6 +21,7 @@ /* * Copyright (c) 2005, 2010, Oracle and/or its affiliates. All rights reserved. * Copyright (c) 2012 by Delphix. All rights reserved. + * Copyright (c) 2013 by Saso Kiselkov. All rights reserved. */ #include @@ -91,6 +92,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 * ========================================================================== @@ -1377,10 +1383,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; } -- 2.11.4.GIT