From owner-freebsd-bugs Wed Jan 2 8:10:12 2002 Delivered-To: freebsd-bugs@hub.freebsd.org Received: from freefall.freebsd.org (freefall.FreeBSD.org [216.136.204.21]) by hub.freebsd.org (Postfix) with ESMTP id EF63737B419 for ; Wed, 2 Jan 2002 08:10:01 -0800 (PST) Received: (from gnats@localhost) by freefall.freebsd.org (8.11.6/8.11.6) id g02GA1388617; Wed, 2 Jan 2002 08:10:01 -0800 (PST) (envelope-from gnats) Date: Wed, 2 Jan 2002 08:10:01 -0800 (PST) Message-Id: <200201021610.g02GA1388617@freefall.freebsd.org> To: freebsd-bugs@FreeBSD.org Cc: From: Hiten Pandya Subject: Re: i386/29045: Heavy disk usage causes panic in ffs_blkfree Reply-To: Hiten Pandya Sender: owner-freebsd-bugs@FreeBSD.ORG Precedence: bulk List-ID: List-Archive: (Web Archive) List-Help: (List Instructions) List-Subscribe: List-Unsubscribe: X-Loop: FreeBSD.org The following reply was made to PR i386/29045; it has been noted by GNATS. From: Hiten Pandya To: freebsd-gnats-submit@FreeBSD.org, wmoran@iowna.com Cc: iedowse@maths.tcd.ie Subject: Re: i386/29045: Heavy disk usage causes panic in ffs_blkfree Date: Wed, 02 Jan 2002 16:01:51 +0000 hi, > IdlePTD 3174400 > > initial pcb at 286640 > panicstr: ffs_blkfree: freeing free block > panic messages: > panic: ffs_blkfree: freeing free block > > syncing disks... 128 123 110 92 66 34 2 2 2 2 2 2 2 2 2 2 2 2 2 2 > giving up on 2 buffers people.. forgive me if I am wrong, and possibly correct me.. :-) I think the issue is all write here in the boot() function, located in src/sys/kern/kern_shutdown.c The following piece of code I have found: (around line 309) ==================== if (nbusy) { /* * Failed to sync all blocks. Indicate this and don't * unmount filesystems (thus forcing an fsck on reboot). */ printf("giving up on %d buffers\n", nbusy); DELAY(5000000); /* 5 seconds */ } else { printf("done\n"); /* * Unmount filesystems */ if (panicstr == 0) vfs_unmountall(); } ====================== The reason you are having a corruption is simply clear, according to the comment. The unmount doesn't occur, and forces and 'fsck' on reboot, thus causing a loss of data or corruption. I don't have a clue what would happen if the 'unmount' was done when all failed to sync.. probably a bad thing would happen.... :-( What we can do, according to my limited knowledge of the kernel, is to print some more debugging output, example: === giving up on %d buffers... Filesystem check (fsck) will occur on next reboot... === Patch: --- kern_shutdown.c.orig Wed Jan 2 15:48:34 2002 +++ kern_shutdown.c Wed Jan 2 15:50:52 2002 @@ -311,6 +311,7 @@ * unmount filesystems (thus forcing an fsck on reboot). */ printf("giving up on %d buffers\n", nbusy); + printf("FileSystem check (fsck) will occur on reboot...\n"); DELAY(5000000); /* 5 seconds */ } else { printf("done\n"); regards, - Hiten - -- Fingerprint: 1024 45:a5:9c:f2:fb:07:da:70:18:02:0b:f3:63:f1:7a:a6 hitenp@hpdi.ath.cx To Unsubscribe: send mail to majordomo@FreeBSD.org with "unsubscribe freebsd-bugs" in the body of the message