From: Linus Torvalds Date: Fri, 24 May 2002 10:31:49 +0000 (-0700) Subject: Undo block devices changes from floppy fix: incorrect. X-Git-Tag: v2.5.18~3 X-Git-Url: http://git.neil.brown.name/?a=commitdiff_plain;h=f70ca4261d1a9fa6b49f2c813798fd6bf16ce2ae;p=history.git Undo block devices changes from floppy fix: incorrect. --- diff --git a/fs/block_dev.c b/fs/block_dev.c index 21c5b08eb8a4..6d90edef1c51 100644 --- a/fs/block_dev.c +++ b/fs/block_dev.c @@ -606,7 +606,16 @@ static int do_open(struct block_device *bdev, struct inode *inode, struct file * goto out2; } bdev->bd_inode->i_size = blkdev_size(dev); - bdev->bd_inode->i_blkbits = blksize_bits(block_size(bdev)); + 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_openers++; unlock_kernel(); up(&bdev->bd_sem);