svn commit: r246675 - head/sys/cddl/contrib/opensolaris/uts/common/fs/zfs
Martin Matuska
mm at FreeBSD.org
Mon Feb 11 13:59:57 UTC 2013
Author: mm
Date: Mon Feb 11 13:59:57 2013
New Revision: 246675
URL: http://svnweb.freebsd.org/changeset/base/246675
Log:
MFV r246394:
Add tunable to allow block allocation on degraded vdevs.
Illumos ZFS issues:
3507 Tunable to allow block allocation even on degraded vdevs
References:
https://www.illumos.org/issues/3507
MFC after: 2 weeks
Modified:
head/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/metaslab.c
Directory Properties:
head/sys/cddl/contrib/opensolaris/ (props changed)
Modified: head/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/metaslab.c
==============================================================================
--- head/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/metaslab.c Mon Feb 11 13:57:03 2013 (r246674)
+++ head/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/metaslab.c Mon Feb 11 13:59:57 2013 (r246675)
@@ -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>
@@ -97,6 +98,15 @@ int metaslab_prefetch_limit = SPA_DVAS_P
int metaslab_smo_bonus_pct = 150;
/*
+ * Should we be willing to write data to degraded vdevs?
+ */
+boolean_t zfs_write_to_degraded = B_FALSE;
+SYSCTL_INT(_vfs_zfs, OID_AUTO, write_to_degraded, CTLFLAG_RW,
+ &zfs_write_to_degraded, 0,
+ "Allow writing data to degraded vdevs");
+TUNABLE_INT("vfs.zfs.write_to_degraded", &zfs_write_to_degraded);
+
+/*
* ==========================================================================
* Metaslab classes
* ==========================================================================
@@ -1383,10 +1393,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;
}
More information about the svn-src-all
mailing list