From owner-freebsd-geom@FreeBSD.ORG Thu Jun 10 22:08:05 2004 Return-Path: Delivered-To: freebsd-geom@freebsd.org Received: from mx1.FreeBSD.org (mx1.freebsd.org [216.136.204.125]) by hub.freebsd.org (Postfix) with ESMTP id 9501516A4CE for ; Thu, 10 Jun 2004 22:08:05 +0000 (GMT) Received: from imap.univie.ac.at (mailbox-lmtp.univie.ac.at [131.130.1.27]) by mx1.FreeBSD.org (Postfix) with ESMTP id D2C9943D48 for ; Thu, 10 Jun 2004 22:08:04 +0000 (GMT) (envelope-from le@FreeBSD.org) Received: from leelou (adslle.cc.univie.ac.at [131.130.102.11]) by imap.univie.ac.at (8.12.10/8.12.10) with ESMTP id i5AM7Xs7956778; Fri, 11 Jun 2004 00:07:38 +0200 Date: Fri, 11 Jun 2004 00:07:33 +0200 (CEST) From: Lukas Ertl To: Poul-Henning Kamp In-Reply-To: <65669.1086898388@critter.freebsd.dk> Message-ID: <20040610235840.Y24264@leelou.in.tern> References: <65669.1086898388@critter.freebsd.dk> MIME-Version: 1.0 Content-Type: TEXT/PLAIN; charset=US-ASCII; format=flowed X-DCC-ZID-Univie-Metrics: mx8 4248; Body=2 Fuz1=2 Fuz2=2 cc: geom@FreeBSD.org Subject: Re: Correct GEOM bio handling X-BeenThere: freebsd-geom@freebsd.org X-Mailman-Version: 2.1.1 Precedence: list List-Id: GEOM-specific discussions and implementations List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Thu, 10 Jun 2004 22:08:05 -0000 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/