Correct GEOM bio handling
Lukas Ertl
le at FreeBSD.org
Thu Jun 10 22:08:05 GMT 2004
On Thu, 10 Jun 2004, Poul-Henning Kamp wrote:
> Normally what you do is you block the bad plex for reading but not
> for writing. That means all normal writes go also to the bad plex,
> no matter where on the bad plex they are located.
Ah, ok, that makes sense.
>> The rebuilding itself works fine, the requests on the waitqueue are
>> detected, but they seem to be ignored once I g_io_request() them, and the
>> process that initiated them is stuck.
>
> Can you find where they are ? Are they on the I/O list ?
They are neither on the bio_down queue nor on the bio up queue. They
vanished. :-)
> What if you set debugflags=4, can you see where they went ?
I assume you meant debugflags=2, since that's the bio debuglevel, but I
don't see them there, too.
If I biowait() on them then I can see that BIO_DONE isn't set, so it
will not return.
Anyway, if I let writes go through unconditionally and reject all reads,
then I probably don't have this problem at all.
thanks,
le
--
Lukas Ertl http://homepage.univie.ac.at/l.ertl/
le at FreeBSD.org http://people.freebsd.org/~le/
More information about the freebsd-geom
mailing list