Date: Fri, 11 Jun 2004 00:07:33 +0200 (CEST) From: Lukas Ertl <le@FreeBSD.org> To: Poul-Henning Kamp <phk@phk.freebsd.dk> Cc: geom@FreeBSD.org Subject: Re: Correct GEOM bio handling Message-ID: <20040610235840.Y24264@leelou.in.tern> In-Reply-To: <65669.1086898388@critter.freebsd.dk> References: <65669.1086898388@critter.freebsd.dk>
next in thread | previous in thread | raw e-mail | index | archive | help
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@FreeBSD.org http://people.freebsd.org/~le/
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?20040610235840.Y24264>