Date: Wed, 2 Jan 2002 08:10:01 -0800 (PST) From: Hiten Pandya <hitmaster2k@yahoo.com> To: freebsd-bugs@FreeBSD.org Subject: Re: i386/29045: Heavy disk usage causes panic in ffs_blkfree Message-ID: <200201021610.g02GA1388617@freefall.freebsd.org>
index | next in thread | raw e-mail
The following reply was made to PR i386/29045; it has been noted by GNATS.
From: Hiten Pandya <hitmaster2k@yahoo.com>
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
- <hiten@uk.FreeBSD.org>
--
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
help
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?200201021610.g02GA1388617>
