]> git.neil.brown.name Git - history.git/commitdiff
Undo block devices changes from floppy fix: incorrect.
authorLinus Torvalds <torvalds@home.transmeta.com>
Fri, 24 May 2002 10:31:49 +0000 (03:31 -0700)
committerLinus Torvalds <torvalds@home.transmeta.com>
Fri, 24 May 2002 10:31:49 +0000 (03:31 -0700)
fs/block_dev.c

index 21c5b08eb8a46e16a74b42d5019003331cce9849..6d90edef1c514ad85e5dc75744afe9c612fa4c28 100644 (file)
@@ -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);