Date: Wed, 27 Nov 2002 11:37:17 +0000 From: Ian Dowse <iedowse@maths.tcd.ie> To: Bruce Evans <bde@zeta.org.au> Cc: Hiten Pandya <hiten@angelica.unixdaemons.com>, "Vladimir B. Grebenschikov" <vova@sw.ru>, "current@freebsd.org" <current@FreeBSD.ORG> Subject: Re: MD broken in current Message-ID: <200211271137.aa77228@salmon.maths.tcd.ie> In-Reply-To: Your message of "Wed, 27 Nov 2002 22:03:33 %2B1100." <20021127215253.G7621-100000@gamplex.bde.org>
next in thread | previous in thread | raw e-mail | index | archive | help
In message <20021127215253.G7621-100000@gamplex.bde.org>, Bruce Evans writes: >On Wed, 27 Nov 2002, Ian Dowse wrote: >> I think moving the line >> >> tsleep(sc, PRIBIO, "mdwait", 0); >> >> to just after the following `if' statement may do the trick. If the > >Wouldn't Giant locking prevent races here? There is no locking in >sight for the ioctl, but ioctl() holds Giant. Yes, but mddestroy() assumes that the kthread is waiting in the "mdwait" tsleep() when it calls wakeup(). That won't be true if the kthread has not yet had a chance to run, or if it is waiting to acquire Giant before entering the main loop (or if anything it calls drops Giant). Moving the check of the MD_SHUTDOWN to before the tsleep should catch all of these cases, and Giant ensures that the wakeup() does not occur after the flag is tested but before the tsleep(). Ian To Unsubscribe: send mail to majordomo@FreeBSD.org with "unsubscribe freebsd-current" in the body of the message
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi? <200211271137.aa77228>