summaryrefslogtreecommitdiff
path: root/fs/block_dev.c
diff options
context:
space:
mode:
authorMikael Pettersson <mikpe@csd.uu.se>2002-05-22 00:31:36 -0700
committerLinus Torvalds <torvalds@penguin.transmeta.com>2002-05-22 00:31:36 -0700
commitd0f0cde199764cb083b3617c3739f45b1a73052d (patch)
tree62bffa26a5e1588b0fc48a348d814ea383a445d7 /fs/block_dev.c
parentc14217358773b5954e4406e0bd63c75f8f66803f (diff)
[PATCH] possible fix for broken floppy driver, take 2
Here is an updated patch for the floppy driver which got broken in 2.5.13. "read block 0 on ->revalidate()" is now implemented through the bio interface, following a suggestion by Christoph Hellwig. I still cannot explain why block_dev.c's ->bd_block_size change caused data corruption, but removing that code fixes the floppy driver and doesn't seem to cause any problems on my test box.
Diffstat (limited to 'fs/block_dev.c')
-rw-r--r--fs/block_dev.c11
1 files changed, 1 insertions, 10 deletions
diff --git a/fs/block_dev.c b/fs/block_dev.c
index 654d98a256b0..27fd276f1a36 100644
--- a/fs/block_dev.c
+++ b/fs/block_dev.c
@@ -606,16 +606,7 @@ static int do_open(struct block_device *bdev, struct inode *inode, struct file *
goto out2;
}
bdev->bd_inode->i_size = blkdev_size(dev);
- if (!bdev->bd_openers) {
- unsigned bsize = bdev_hardsect_size(bdev);
- while (bsize < PAGE_CACHE_SIZE) {
- if (bdev->bd_inode->i_size & bsize)
- break;
- bsize <<= 1;
- }
- bdev->bd_block_size = bsize;
- bdev->bd_inode->i_blkbits = blksize_bits(bsize);
- }
+ bdev->bd_inode->i_blkbits = blksize_bits(block_size(bdev));
bdev->bd_openers++;
unlock_kernel();
up(&bdev->bd_sem);