git://git.onelab.eu
/
linux-2.6.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
vserver 1.9.3
[linux-2.6.git]
/
drivers
/
block
/
rd.c
diff --git
a/drivers/block/rd.c
b/drivers/block/rd.c
index
fe8332e
..
b3c7f07
100644
(file)
--- a/
drivers/block/rd.c
+++ b/
drivers/block/rd.c
@@
-349,13
+349,17
@@
static int rd_open(struct inode *inode, struct file *filp)
if (rd_bdev[unit] == NULL) {
struct block_device *bdev = inode->i_bdev;
struct address_space *mapping;
if (rd_bdev[unit] == NULL) {
struct block_device *bdev = inode->i_bdev;
struct address_space *mapping;
+ unsigned bsize;
int gfp_mask;
inode = igrab(bdev->bd_inode);
rd_bdev[unit] = bdev;
bdev->bd_openers++;
int gfp_mask;
inode = igrab(bdev->bd_inode);
rd_bdev[unit] = bdev;
bdev->bd_openers++;
- bdev->bd_block_size = rd_blocksize;
- inode->i_size = get_capacity(rd_disks[unit])<<9;
+ bsize = bdev_hardsect_size(bdev);
+ bdev->bd_block_size = bsize;
+ inode->i_blkbits = blksize_bits(bsize);
+ inode->i_size = get_capacity(bdev->bd_disk)<<9;
+
mapping = inode->i_mapping;
mapping->a_ops = &ramdisk_aops;
mapping->backing_dev_info = &rd_backing_dev_info;
mapping = inode->i_mapping;
mapping->a_ops = &ramdisk_aops;
mapping->backing_dev_info = &rd_backing_dev_info;
@@
-449,6
+453,7
@@
static int __init rd_init(void)
goto out_queue;
blk_queue_make_request(rd_queue[i], &rd_make_request);
goto out_queue;
blk_queue_make_request(rd_queue[i], &rd_make_request);
+ blk_queue_hardsect_size(rd_queue[i], rd_blocksize);
/* rd_size is given in kB */
disk->major = RAMDISK_MAJOR;
/* rd_size is given in kB */
disk->major = RAMDISK_MAJOR;