Mercurial > illumos > illumos-gate
changeset 13945:7a9c1d41dfbe
3507 Tunable to allow block allocation even on degraded vdevs
Reviewed by: George Wilson <george.wilson@delphix.com>
Reviewed by: Matthew Ahrens <mahrens@delphix.com>
Approved by: Christopher Siden <csiden@delphix.com>
author | Sašo Kiselkov <skiselkov@gmail.com> |
---|---|
date | Tue, 05 Feb 2013 11:15:10 -0800 |
parents | bbcbb468dc37 |
children | 41660db11225 |
files | usr/src/uts/common/fs/zfs/metaslab.c |
diffstat | 1 files changed, 10 insertions(+), 1 deletions(-) [+] |
line wrap: on
line diff
--- a/usr/src/uts/common/fs/zfs/metaslab.c Tue Feb 05 10:10:25 2013 -0800 +++ b/usr/src/uts/common/fs/zfs/metaslab.c Tue Feb 05 11:15:10 2013 -0800 @@ -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 <sys/zfs_context.h> @@ -91,6 +92,11 @@ 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 @@ /* * 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; }