Skip site navigation (1)Skip section navigation (2)
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>