# This is a BitKeeper generated patch for the following project: # Project Name: Linux kernel tree # This patch format is intended for GNU patch command version 2.5 or higher. # This patch includes the following deltas: # ChangeSet 1.513 -> 1.515 # fs/block_dev.c 1.55 -> 1.56 # drivers/block/rd.c 1.35 -> 1.36 # # The following is the BitKeeper ChangeSet Log # -------------------------------------------- # 02/05/15 jejb@mulgrave.(none) 1.514 # [RD FIX] # # tie hardsect_size of the queue to rd_blocksize # -------------------------------------------- # 02/05/15 jejb@mulgrave.(none) 1.515 # [RD FIX] # # Make do_open respect the rd_hardsect limit (this fix is incorrect # since it will reset the size on every call into do_open). Need to # find out why bd_openers is always set for rd. # -------------------------------------------- # diff -Nru a/drivers/block/rd.c b/drivers/block/rd.c --- a/drivers/block/rd.c Wed May 15 12:40:29 2002 +++ b/drivers/block/rd.c Wed May 15 12:40:29 2002 @@ -424,6 +424,7 @@ } blk_queue_make_request(BLK_DEFAULT_QUEUE(MAJOR_NR), &rd_make_request); + blk_queue_hardsect_size(BLK_DEFAULT_QUEUE(MAJOR_NR), rd_blocksize); for (i = 0; i < NUM_RAMDISKS; i++) { /* rd_size is given in kB */ diff -Nru a/fs/block_dev.c b/fs/block_dev.c --- a/fs/block_dev.c Wed May 15 12:40:29 2002 +++ b/fs/block_dev.c Wed May 15 12:40:29 2002 @@ -606,7 +606,15 @@ goto out2; } bdev->bd_inode->i_size = blkdev_size(dev); - if (!bdev->bd_openers) { + if (major(dev) == RAMDISK_MAJOR) { + /* always set the bd_block_size to the hardsect size */ + unsigned bsize = bdev_hardsect_size(bdev); + + bdev->bd_block_size = bsize; + bdev->bd_inode->i_blkbits = blksize_bits(bsize); + printk("SETTING %d:%d to hardsect %d\n", + major(dev), minor(dev), bsize); + } else if (!bdev->bd_openers) { unsigned bsize = bdev_hardsect_size(bdev); while (bsize < PAGE_CACHE_SIZE) { if (bdev->bd_inode->i_size & bsize)