svn commit: r217002 - stable/8/sys/dev/md
Konstantin Belousov
kib at FreeBSD.org
Wed Jan 5 12:45:12 UTC 2011
Author: kib
Date: Wed Jan 5 12:45:11 2011
New Revision: 217002
URL: http://svn.freebsd.org/changeset/base/217002
Log:
MFC r216793:
Add sysctl vm.md_malloc_wait, non-zero value of which switches malloc-backed
md(4) to using M_WAITOK malloc calls.
Modified:
stable/8/sys/dev/md/md.c
Directory Properties:
stable/8/sys/ (props changed)
stable/8/sys/amd64/include/xen/ (props changed)
stable/8/sys/cddl/contrib/opensolaris/ (props changed)
stable/8/sys/contrib/dev/acpica/ (props changed)
stable/8/sys/contrib/pf/ (props changed)
Modified: stable/8/sys/dev/md/md.c
==============================================================================
--- stable/8/sys/dev/md/md.c Wed Jan 5 12:27:57 2011 (r217001)
+++ stable/8/sys/dev/md/md.c Wed Jan 5 12:45:11 2011 (r217002)
@@ -103,6 +103,8 @@ static MALLOC_DEFINE(M_MDSECT, "md_secto
static int md_debug;
SYSCTL_INT(_debug, OID_AUTO, mddebug, CTLFLAG_RW, &md_debug, 0, "");
+static int md_malloc_wait;
+SYSCTL_INT(_vm, OID_AUTO, md_malloc_wait, CTLFLAG_RW, &md_malloc_wait, 0, "");
#if defined(MD_ROOT) && defined(MD_ROOT_SIZE)
/*
@@ -207,11 +209,12 @@ new_indir(u_int shift)
{
struct indir *ip;
- ip = malloc(sizeof *ip, M_MD, M_NOWAIT | M_ZERO);
+ ip = malloc(sizeof *ip, M_MD, (md_malloc_wait ? M_WAITOK : M_NOWAIT)
+ | M_ZERO);
if (ip == NULL)
return (NULL);
ip->array = malloc(sizeof(uintptr_t) * NINDIR,
- M_MDSECT, M_NOWAIT | M_ZERO);
+ M_MDSECT, (md_malloc_wait ? M_WAITOK : M_NOWAIT) | M_ZERO);
if (ip->array == NULL) {
free(ip, M_MD);
return (NULL);
@@ -455,6 +458,7 @@ mdstart_malloc(struct md_s *sc, struct b
} else {
if (osp <= 255) {
sp = (uintptr_t)uma_zalloc(sc->uma,
+ md_malloc_wait ? M_WAITOK :
M_NOWAIT);
if (sp == 0) {
error = ENOSPC;
@@ -849,7 +853,8 @@ mdcreate_malloc(struct md_s *sc, struct
nsectors = sc->mediasize / sc->sectorsize;
for (u = 0; u < nsectors; u++) {
- sp = (uintptr_t)uma_zalloc(sc->uma, M_NOWAIT | M_ZERO);
+ sp = (uintptr_t)uma_zalloc(sc->uma, md_malloc_wait ?
+ M_WAITOK : M_NOWAIT | M_ZERO);
if (sp != 0)
error = s_write(sc->indir, u, sp);
else
More information about the svn-src-stable-8
mailing list