Index: kernel-source-2.5/fs/buffer.c =================================================================== RCS file: /home/gondolin/herbert/src/CVS/debian/kernel-source-2.5/fs/buffer.c,v retrieving revision 1.1.1.15 diff -u -r1.1.1.15 buffer.c --- kernel-source-2.5/fs/buffer.c 8 Oct 2003 19:24:14 -0000 1.1.1.15 +++ kernel-source-2.5/fs/buffer.c 2 Nov 2003 09:54:07 -0000 @@ -400,7 +400,7 @@ * private_lock is contended then so is mapping->page_lock). */ static struct buffer_head * -__find_get_block_slow(struct block_device *bdev, sector_t block, int unused) +__find_get_block_slow(struct block_device *bdev, sector_t block, int size) { struct inode *bd_inode = bdev->bd_inode; struct address_space *bd_mapping = bd_inode->i_mapping; @@ -419,6 +419,8 @@ if (!page_has_buffers(page)) goto out_unlock; head = page_buffers(page); + if (head->b_size != size) + goto out_unlock; bh = head; do { if (bh->b_blocknr == block) { Index: kernel-source-2.5/fs/block_dev.c =================================================================== RCS file: /home/gondolin/herbert/src/CVS/debian/kernel-source-2.5/fs/block_dev.c,v retrieving revision 1.1.1.15 retrieving revision 1.15 diff -u -r1.1.1.15 -r1.15 --- kernel-source-2.5/fs/block_dev.c 8 Oct 2003 19:24:53 -0000 1.1.1.15 +++ kernel-source-2.5/fs/block_dev.c 11 Oct 2003 06:29:24 -0000 1.15 @@ -66,7 +66,7 @@ sync_blockdev(bdev); bdev->bd_block_size = size; bdev->bd_inode->i_blkbits = blksize_bits(size); - kill_bdev(bdev); + invalidate_bdev(bdev, 1); return 0; }