Date: Fri, 1 Feb 2008 13:57:09 -0000 From: "Steven Hartland" <killing@multiplay.co.uk> To: "Steven Hartland" <killing@multiplay.co.uk>, "Eric Anderson" <anderson@freebsd.org> Cc: Dieter <freebsd@sopwith.solgatos.com>, freebsd-performance@freebsd.org Subject: Re: newfs locks entire machine for 20seconds Message-ID: <018701c864da$57020f20$b6db87d4@multiplay.co.uk> References: <200801310147.BAA04522@sopwith.solgatos.com><47A2A606.9080702@freebsd.org><002201c86499$7861ac20$b6db87d4@multiplay.co.uk><47A30EA7.7050506@freebsd.org> <016401c864d6$73251c50$b6db87d4@multiplay.co.uk>
next in thread | previous in thread | raw e-mail | index | archive | help
----- Original Message ----- From: "Steven Hartland" <killing@multiplay.co.uk> > ----- Original Message ----- > From: "Eric Anderson" <anderson@freebsd.org> >> Wait - if it returns EAGAIN for a while, then look at that code above. >> It will hold the sysctl lock for some indefinite amount of time. Maybe >> it should look like this instead: >> >> >> do { >> SYSCTL_LOCK(); >> req.oldidx = 0; >> req.newidx = 0; >> error = sysctl_root(0, name, namelen, &req); >> SYSCTL_UNLOCK(); >> } while (error == EAGAIN); >> >> if (req.lock == REQ_WIRED && req.validlen > 0) >> vsunlock(req.oldptr, req.validlen); >> > > Tried no difference unfortunately, possibly its give the closeness > of the lock unlock its just reacquiring the lock straight after releasing > it hence not giving the other thread chance to run / obtain the lock? In an attempt to prove this is in fact the issue I've tried with the locking around this code removed, yes dangerous but just as a test :) It does indeed prevent the extended lockup so this is the right area. Regards Steve ================================================ This e.mail is private and confidential between Multiplay (UK) Ltd. and the person or entity to whom it is addressed. In the event of misdirection, the recipient is prohibited from using, copying, printing or otherwise disseminating it or any information contained in it. In the event of misdirection, illegible or incomplete transmission please telephone +44 845 868 1337 or return the E.mail to postmaster@multiplay.co.uk.
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?018701c864da$57020f20$b6db87d4>