Date: Sun, 23 Sep 2012 11:00:23 GMT From: Fabian Keil <fk@fabiankeil.de> To: freebsd-bugs@FreeBSD.org Subject: Re: kern/171865: [geom] g_wither_washer() keeping a core busy Message-ID: <201209231100.q8NB0NvT041937@freefall.freebsd.org>
next in thread | raw e-mail | index | archive | help
The following reply was made to PR kern/171865; it has been noted by GNATS. From: Fabian Keil <fk@fabiankeil.de> To: bug-followup@FreeBSD.org Cc: Subject: Re: kern/171865: [geom] g_wither_washer() keeping a core busy Date: Sun, 23 Sep 2012 12:56:23 +0200 --Sig_/KU5E65A_olXP4OejkTDNCQi Content-Type: multipart/mixed; boundary="MP_/v14wCMsERAWZ+BN5MCnuOBj" --MP_/v14wCMsERAWZ+BN5MCnuOBj Content-Type: text/plain; charset=US-ASCII Content-Transfer-Encoding: quoted-printable Content-Disposition: inline The attached patch actually applies against a vanilla tree. Fabian --MP_/v14wCMsERAWZ+BN5MCnuOBj Content-Type: text/x-patch Content-Transfer-Encoding: quoted-printable Content-Disposition: attachment; filename=0001-Allow-to-use-kern.geom.debugflags-to-prevent-g_run_e.diff =46rom 86f9c2e1f3c49a1f3b699091521e97c268c0e8a5 Mon Sep 17 00:00:00 2001 From: Fabian Keil <fk@fabiankeil.de> Date: Thu, 12 Jul 2012 12:38:00 +0200 Subject: [PATCH] Allow to use kern.geom.debugflags to prevent g_run_events() from calling g_wither_washer() Workaround for geom keeping a whole core busy failing to remove a lost device. --- sys/geom/geom_event.c | 3 +++ sys/geom/geom_int.h | 1 + 2 files changed, 4 insertions(+) diff --git a/sys/geom/geom_event.c b/sys/geom/geom_event.c index e3b5261..7491bc3 100644 --- a/sys/geom/geom_event.c +++ b/sys/geom/geom_event.c @@ -47,6 +47,7 @@ __FBSDID("$FreeBSD: src/sys/geom/geom_event.c,v 1.62 2012= /07/29 11:51:48 mav Exp #include <sys/kernel.h> #include <sys/lock.h> #include <sys/mutex.h> +#include <sys/sysctl.h> #include <sys/proc.h> #include <sys/errno.h> #include <sys/time.h> @@ -281,6 +282,8 @@ g_run_events() ; mtx_assert(&g_eventlock, MA_OWNED); i =3D g_wither_work; + if (g_debugflags & G_F_STOP_WITHERING) + i =3D 0; if (i) { mtx_unlock(&g_eventlock); while (i) { diff --git a/sys/geom/geom_int.h b/sys/geom/geom_int.h index 50f3a2a..0c11be8 100644 --- a/sys/geom/geom_int.h +++ b/sys/geom/geom_int.h @@ -50,6 +50,7 @@ extern int g_debugflags; */ #define G_F_DISKIOCTL 64 #define G_F_CTLDUMP 128 +#define G_F_STOP_WITHERING 256 =20 /* geom_dump.c */ void g_confxml(void *, int flag); --=20 1.7.11.5 --MP_/v14wCMsERAWZ+BN5MCnuOBj-- --Sig_/KU5E65A_olXP4OejkTDNCQi Content-Type: application/pgp-signature; name=signature.asc Content-Disposition: attachment; filename=signature.asc -----BEGIN PGP SIGNATURE----- Version: GnuPG v2.0.19 (FreeBSD) iEYEARECAAYFAlBe6ukACgkQSMVSH78upWPNlgCgggUNpxSe71/g7mMol0cDU1+6 rgUAn0u3axvgaA+dkbHFPs/NMVlPobMt =lsto -----END PGP SIGNATURE----- --Sig_/KU5E65A_olXP4OejkTDNCQi--
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?201209231100.q8NB0NvT041937>