Date: Thu, 23 Nov 2006 12:12:46 +0200 From: Kostik Belousov <kostikbel@gmail.com> To: Steven Hartland <killing@multiplay.co.uk> Cc: freebsd-fs@freebsd.org, Mike Jakubik <mikej@rogers.com>, freebsd-stable@freebsd.org Subject: Re: md deadlocks on wdrain. Was: [Re: quota and snapshots in6.1-RELEASE] Message-ID: <20061123101246.GM1841@deviant.kiev.zoral.com.ua> In-Reply-To: <027b01c70e6c$6c879470$b3db87d4@multiplay.co.uk> References: <447366AD.30203@rogers.com> <20060701034922.GA37822@deviant.kiev.zoral.com.ua> <027b01c70e6c$6c879470$b3db87d4@multiplay.co.uk>
next in thread | previous in thread | raw e-mail | index | archive | help
--LQv0vi9oZBoYbpa7 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline Content-Transfer-Encoding: quoted-printable On Wed, Nov 22, 2006 at 07:28:37PM -0000, Steven Hartland wrote: > The patch below fixed this issue for us. We had a jail which > when upgrading ( installworld ) from 5.4 to 6.1 would constantly > hang the machine with this error. >=20 > After updating md.c to 1.164 from MAIN and applying the patch > below I've managed to run installworld 3 times now without error. > Previously including updated to v1.164 this would hang without > fail. >=20 > If this is the correct fix, it would be good to see get committed > as it have the capability to knock out any box running a vnode > backed jail and is very unpredictable. This is not a fix, this is only a way to make the deadlock less frequent (I would not ever call it workaround). I have got a reports of deadlocks with this change applied, and I think that I understand the cause of it. Also, I have an idea of how to fix it, but not got around to even start coding. > ? sys/dev/md/.arch-ids > Index: sys/dev/md/md.c > =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D > RCS file: /usr/local/arch/ncvs/src/sys/dev/md/md.c,v > retrieving revision 1.164 > diff -u -r1.164 md.c > --- sys/dev/md/md.c 28 Mar 2006 21:25:11 -0000 1.164 > +++ sys/dev/md/md.c 1 Jul 2006 03:48:41 -0000 > @@ -650,6 +650,8 @@ > mtx_lock_spin(&sched_lock); > sched_prio(curthread, PRIBIO); > mtx_unlock_spin(&sched_lock); > + if (sc->type =3D=3D MD_VNODE) > + curthread->td_pflags |=3D TDP_NORUNNINGBUF; >=20 > for (;;) { > mtx_lock(&sc->queue_mtx); --LQv0vi9oZBoYbpa7 Content-Type: application/pgp-signature Content-Disposition: inline -----BEGIN PGP SIGNATURE----- Version: GnuPG v1.4.5 (FreeBSD) iD8DBQFFZXQdC3+MBN1Mb4gRAumDAJ9rK2AMG6wsyddAUqFGhjpeGah6FgCg9qUr +LWdv4tFahID2t7vBR6vD8I= =gFhp -----END PGP SIGNATURE----- --LQv0vi9oZBoYbpa7--
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?20061123101246.GM1841>