Re: 2.6.0test9 Reiserfs boot time "buffer layer error at fs/buffer.c:431"

lkml-031028
2003-10-29T06:57:08Z

On Tue, Oct 28, 2003 at 02:13:29PM -0800, Andrew Morton wrote:
> I've been waiting a year for someone who can reproduce this.

Looks like it's reproducible right now - I got exactly the same
message when I boot again later.

I'll try not to move things too much so I can test this more.
(You don't think it's critical, do you?)

> Are you using initrd?

Nope. Just plain old /boot/vmlinuz on a simple IDE disk with
a single ReiserFS partition and ReiserFS code compiled into
the kernel.

> Could you please add this patch, and send the new dmesg output?

Will do it gladly, when I'm back home tonight.

Thanks for everything,

--Amos

PS I'm not on lkml, so please keep me cc'ed about this.

>
>
> 25-akpm/fs/block_dev.c | 15 ++++++++++++---
> 1 files changed, 12 insertions(+), 3 deletions(-)
>
> diff -puN fs/block_dev.c~a fs/block_dev.c
> --- 25/fs/block_dev.c~a Tue Oct 28 14:11:20 2003
> +++ 25-akpm/fs/block_dev.c Tue Oct 28 14:11:24 2003
> @@ -50,17 +50,26 @@ int set_blocksize(struct block_device *b
> {
> int oldsize;
>
> + printk("%s: size=%d\n", __FUNCTION__, size);
> +
> /* Size must be a power of two, and between 512 and PAGE_SIZE */
> - if (size > PAGE_SIZE || size < 512 || (size & (size-1)))
> + if (size > PAGE_SIZE || size < 512 || (size & (size-1))) {
> + printk("%s: EINVAL 1\n", __FUNCTION__);
> return -EINVAL;
> + }
>
> /* Size cannot be smaller than the size supported by the device */
> - if (size < bdev_hardsect_size(bdev))
> + if (size < bdev_hardsect_size(bdev)) {
> + printk("%s: %d < %d\n", __FUNCTION__, size,
> + bdev_hardsect_size(bdev));
> return -EINVAL;
> + }
>
> oldsize = bdev->bd_block_size;
> - if (oldsize == size)
> + if (oldsize == size) {
> + printk("%s: %d OK\n", __FUNCTION__, size);
> return 0;
> + }
>
> /* Ok, we're actually changing the blocksize.. */
> sync_blockdev(bdev);
>
> _
>
>
>