Re: 2.5.46: buffer layer error at fs/buffer.c:399

Andrew Morton (akpm@digeo.com)
Sun, 10 Nov 2002 16:53:14 -0800


Martin Diehl wrote:
>
> Hi,
>
> shortly after upgrading 2.5.45->2.5.46 I got this while cp'ing some
> regular file. Source and destination was both in rootfs, which is ext2.
> It's not exactly reproducible, however apparently triggered by files
> larger than about 500KB - at least I got a few with those but never from
> smaller one.
>
> Despite this error/warning(?) the requested file was successfully copied
> (and diffed). A forced fsck on / didn't find any corruption. And it seems
> it doesn't occur if the target file exists, i.e. it's overwritten.
>
> Kernel is 2.5.46 SMP running on UP box. The new extended attributes were
> not enabled for ext2.
>
> Martin
>
> -------------------
>
> * this one was triggered by "cp file1 file2" (cwd=/root)
>
> buffer layer error at fs/buffer.c:399
> Pass this trace through ksymoops for reporting
> Call Trace:
> [<c0151db6>] __find_get_block_slow+0xe6/0x150
> [<c0152ec6>] __find_get_block+0xd6/0xf0
> [<c0153277>] unmap_underlying_metadata+0x17/0x50

This means that we had pagecache floating about which has buffers,
but those buffers had unexpected block numbers. Possibly something
went wrong during an earlier invalidation of the device during the
mount process. Do you remember if a fsck happened during that bootup?

Is there anything unusual about your setup? Using initrd? Is the
rootfs backed by a normal old disk?

Could I please see a `dumpe2fs -h' of that device?

Please, run with this patch and see if if happens again, thanks.

--- 25/fs/buffer.c~buffer-debug Sun Nov 10 16:47:31 2002
+++ 25-akpm/fs/buffer.c Sun Nov 10 16:49:59 2002
@@ -397,6 +397,9 @@ __find_get_block_slow(struct block_devic
bh = bh->b_this_page;
} while (bh != head);
buffer_error();
+ printk("block=%llu, b_blocknr=%llu\n",
+ (unsigned long long)block, (unsigned long long)bh->b_blocknr);
+ printk("b_state=0x%08lx, b_size=%u\n", bh->b_state, bh->b_size);
out_unlock:
spin_unlock(&bd_mapping->private_lock);
page_cache_release(page);

_
-
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@vger.kernel.org
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/