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