From owner-freebsd-bugs@FreeBSD.ORG Tue Aug 19 06:05:09 2003 Return-Path: Delivered-To: freebsd-bugs@freebsd.org Received: from mx1.FreeBSD.org (mx1.freebsd.org [216.136.204.125]) by hub.freebsd.org (Postfix) with ESMTP id 2BB8B16A4BF for ; Tue, 19 Aug 2003 06:05:09 -0700 (PDT) Received: from unia.3lo.lublin.pl (unia.3lo.lublin.pl [212.182.70.2]) by mx1.FreeBSD.org (Postfix) with SMTP id 67CB343FF2 for ; Tue, 19 Aug 2003 06:05:06 -0700 (PDT) (envelope-from pawmal@unia.3lo.lublin.pl) Received: (qmail 62706 invoked by uid 1007); 19 Aug 2003 13:05:15 -0000 Date: Tue, 19 Aug 2003 15:05:15 +0200 From: =?iso-8859-2?Q?Pawe=B3_Ma=B3achowski?= To: FreeBSD-gnats-submit@FreeBSD.org Message-ID: <20030819130515.GB62433@unia.3lo.lublin.pl> Mime-Version: 1.0 Content-Type: text/plain; charset=iso-8859-2 Content-Disposition: inline Content-Transfer-Encoding: 8bit User-Agent: Mutt/1.4.1i cc: grog@FreeBSD.org cc: freebsd-bugs@FreeBSD.org Subject: kern/52916 (vinum start/stop panic) X-BeenThere: freebsd-bugs@freebsd.org X-Mailman-Version: 2.1.1 Precedence: list List-Id: Bug reports List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Tue, 19 Aug 2003 13:05:09 -0000 > 15. Kernel panic happens right now, before splx(s), however sometimes splx() > is called and biowait() returns with 0 before panic happens. Actually, this finishing biowait() is not the one called by vinum (bp is different). Let's summarize: It looks that when open_drive() is called, some data in memory are getting corrupted. After tsleep() [kern/vfs_bio.c, biowait() called from dsinit()], some other processes have ability to work with disk, however, they usually fail as described earlier in audit-trail (,,Input/output error'' etc., also ,,handle_workitem_freeblocks: block count''). In most cases system panics in dscheck() while syncing because of invalid lp pointer. Probably this is not an issue when starting vinum from rc.conf, cause / fs is mounted read-only so write requests are not handled. This might give a real clue, I'm testing this on the following HDD configuration: ad0 - / fs mounted rw (/dev/ad0s1a) and swap (/dev/ad0s1b), there are no more partitions or slices da0 - /dev/da0s1b, used only as a dumpdev da1 - not used Running FreeBSD 4.8-STABLE. No vinum slices defined. When I run: vinum read /dev/da0; vinum stop; ... it will NOT panic. :) When I run: vinum read /dev/ad0; vinum stop; ... it WILL panic. If I force vinum at vinum_scandisk() to call dscheck() only for ('b'<=x<'i') partitions and run: vinum read /dev/ad0; vinum stop; ... seems it will NOT panic. If I force vinum at vinum_scandisk() to call dscheck() for ('a'<=x<'i', excluding 'c' and 'b') partition and run: vinum read /dev/ad0; vinum stop; ... seems it will NOT panic. If I force vinum at vinum_scandisk() to call dscheck() only for ('a'<=x<'c') partitions and run: vinum read /dev/ad0; vinum stop; ... it WILL panic, but not too fast. If I force vinum at vinum_scandisk() to call dscheck() only for ('a'<=x<'b') partition and run: vinum read /dev/ad0; vinum stop; ... seems it will NOT panic. where: ,,seems it will NOT panic'' == >500 iterations of read/stop loop without problem during ad0s1a (cd /usr/ports && make clean) activity. -- Paweł Małachowski