From owner-freebsd-geom@FreeBSD.ORG Tue Feb 3 10:10:35 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 F048516A4D3; Tue, 3 Feb 2004 10:10:34 -0800 (PST) Received: from mailbox.univie.ac.at (mail.univie.ac.at [131.130.1.27]) by mx1.FreeBSD.org (Postfix) with ESMTP id 9B53543D46; Tue, 3 Feb 2004 10:10:32 -0800 (PST) (envelope-from le@FreeBSD.org) Received: from wireless (adslle.cc.univie.ac.at [131.130.102.11]) i13IAPNd566976; Tue, 3 Feb 2004 19:10:27 +0100 Date: Tue, 3 Feb 2004 19:10:23 +0100 (CET) From: Lukas Ertl To: Pawel Jakub Dawidek In-Reply-To: <20040203162253.GV4200@garage.freebsd.pl> Message-ID: <20040203190839.Y616@korben.in.tern> References: <20040203164816.X616@korben.in.tern> <20040203162253.GV4200@garage.freebsd.pl> MIME-Version: 1.0 Content-Type: TEXT/PLAIN; charset=US-ASCII X-DCC-ZID-Univie-Metrics: mailbox 4243; Body=0 Fuz1=0 Fuz2=0 cc: freebsd-geom@FreeBSD.org Subject: Re: vinum and GEOM deadlock situation 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: Tue, 03 Feb 2004 18:10:35 -0000 On Tue, 3 Feb 2004, Pawel Jakub Dawidek wrote: > On Tue, Feb 03, 2004 at 04:56:23PM +0100, Lukas Ertl wrote: > +> I'm running into a deadlock situation with the following scenario: > +> > +> Have a vinum RAID5 with several disks mounted, pull out one of the disks, > +> shortly thereafter all I/O hangs. > +> > +> I managed to identify the deadlock, but couldn't come up with a fix yet. > +> > +> Let's see. Here's the backtrace of the vinum process: > [...] > > Yes, the deadlock is obvious. > [...] > The problem here is, that dp->d_close() is called with the topology lock > and d_close() is calling disk_destroy() and there topology lock should > not be holded. I also think that the only place where we can drop and re-grab the topology lock is around the dp->d_close() call, but I'm not sure if there are any side effects. I'm gonna try it tomorrow. regards, le -- Lukas Ertl http://mailbox.univie.ac.at/~le/ le@FreeBSD.org http://people.freebsd.org/~le/