case BLKSSZGET:
/* get block device hardware sector size */
- intval = get_hardsect_size(dev);
+ intval = bdev_hardsect_size(bdev);
return put_user(intval, (int *) arg);
case BLKGETSIZE:
*/
int ll_10byte_cmd_build(request_queue_t *q, struct request *rq)
{
- int hard_sect = get_hardsect_size(rq->rq_dev);
+ int hard_sect = queue_hardsect_size(q);
sector_t block = rq->hard_sector / (hard_sect >> 9);
unsigned long blocks = rq->hard_nr_sectors / (hard_sect >> 9);
major = major(bhs[0]->b_dev);
/* Determine correct block size for this device. */
- correct_size = get_hardsect_size(bhs[0]->b_dev);
+ correct_size = bdev_hardsect_size(bhs[0]->b_bdev);
/* Verify requested block sizes. */
for (i = 0; i < nr; i++) {
{
int minor;
struct block_device * bdev;
- kdev_t rdev; /* it should eventually go away */
int err;
int sector_size;
int sector_bits;
goto out;
atomic_inc(&bdev->bd_count);
- rdev = to_kdev_t(bdev->bd_dev);
err = blkdev_get(bdev, filp->f_mode, 0, BDEV_RAW);
if (err)
goto out;
if (raw_devices[minor].inuse++)
goto out;
- sector_size = get_hardsect_size(rdev);
+ sector_size = bdev_hardsect_size(bdev);
raw_devices[minor].sector_size = sector_size;
for (sector_bits = 0; !(sector_size & 1); )
sector_size>>=1, sector_bits++;
switch (command) {
case BLKSSZGET:
/* get block device sector size as needed e.g. by fdisk */
- return put_user(get_hardsect_size(inode->i_rdev), (int *) arg);
+ return put_user(bdev_hardsect_size(inode->i_bdev), (int *) arg);
case BLKGETSIZE:
/* return device size */
continue;
invalidate_device(rdev->dev, 1);
md_blocksizes[mdidx(mddev)] = 1024;
- if (get_hardsect_size(rdev->dev) > md_blocksizes[mdidx(mddev)])
- md_blocksizes[mdidx(mddev)] = get_hardsect_size(rdev->dev);
+ if (bdev_hardsect_size(rdev->bdev) > md_blocksizes[mdidx(mddev)])
+ md_blocksizes[mdidx(mddev)] = bdev_hardsect_size(rdev->bdev);
}
mddev->pers = pers[pnum];
__u8 *data;
kdev_t dev = mk_kdev(tapeblock_major, ti->blk_minor);
unsigned bsize = block_size(dev);
- int s2b = bsize/get_hardsect_size(dev);
+ int s2b = bsize/queue_hardsect_size(&ti->request_queue);
int realcount;
int size,bhct = 0;
struct buffer_head* bh;
int sb_min_blocksize(struct super_block *sb, int size)
{
- int minsize = get_hardsect_size(sb->s_dev);
+ int minsize = bdev_hardsect_size(sb->s_bdev);
if (size < minsize)
size = minsize;
return sb_set_blocksize(sb, size);
int sizebits;
/* Size must be multiple of hard sectorsize */
- if (size & (get_hardsect_size(to_kdev_t(bdev->bd_dev))-1))
+ if (size & (bdev_hardsect_size(bdev)-1))
BUG();
/* Size must be within 512 bytes and PAGE_SIZE */
if (size < 512 || size > PAGE_SIZE)
unsigned long logic_sb_block = 1;
unsigned long offset = 0;
unsigned long journal_inum = 0;
- kdev_t dev = sb->s_dev;
int blocksize;
int hblock;
int db_count;
sb->s_maxbytes = ext3_max_size(sb->s_blocksize_bits);
- hblock = get_hardsect_size(dev);
+ hblock = bdev_hardsect_size(sb->s_bdev);
if (sb->s_blocksize != blocksize) {
/*
* Make sure the blocksize for the filesystem is larger
return NULL;
blocksize = sb->s_blocksize;
- hblock = get_hardsect_size(j_dev);
+ hblock = bdev_hardsect_size(bdev);
if (blocksize < hblock) {
printk(KERN_ERR
"EXT3-fs: blocksize too small for journal device.\n");
if (!hd || !bdev || !buffer || !count)
return 0;
- blocksize = get_hardsect_size(to_kdev_t(bdev->bd_dev));
+ blocksize = bdev_hardsect_size(bdev);
if (!blocksize)
blocksize = 512;
{
kdev_t dev = to_kdev_t(bdev->bd_dev);
- int hardblocksize = get_hardsect_size(dev);
- int orig_blksize_size = BLOCK_SIZE;
+ int hardblocksize = bdev_hardsect_size(bdev);
+ int orig_blksize_size = block_size(dev);
int rc = 0;
/* Need to change the block size that the block layer uses */
- if (blksize_size[major(dev)]) {
- orig_blksize_size = blksize_size[major(dev)][minor(dev)];
- }
if (orig_blksize_size != hardblocksize)
set_blocksize(dev, hardblocksize);
return 0;
if (ioctl_by_bdev(bdev, HDIO_GETGEO, (unsigned long)geo);
return 0;
- blocksize = get_hardsect_size(dev) >> 9;
+ blocksize = bdev_hardsect_size(bdev) >> 9;
data = read_dev_sector(bdev, inode->label_block*blocksize, §);
if (!data)
unsigned char *data;
unsigned long first_sector, this_sector, this_size;
int mask = (1 << hd->minor_shift) - 1;
- int sector_size = get_hardsect_size(to_kdev_t(bdev->bd_dev)) / 512;
+ int sector_size = bdev_hardsect_size(bdev) / 512;
int loopct = 0; /* number of links followed
without finding a data partition */
int i;
struct partition *p;
unsigned char *data;
int mask = (1 << hd->minor_shift) - 1;
- int sector_size = get_hardsect_size(to_kdev_t(bdev->bd_dev)) / 512;
+ int sector_size = bdev_hardsect_size(bdev) / 512;
int current_minor = first_part_minor;
int err;
blksize_size[major] = NULL;
}
-extern inline int get_hardsect_size(kdev_t dev)
+extern inline int queue_hardsect_size(request_queue_t *q)
{
- request_queue_t *q = blk_get_queue(dev);
int retval = 512;
if (q && q->hardsect_size)
return retval;
}
+extern inline int get_hardsect_size(kdev_t dev)
+{
+ return queue_hardsect_size(blk_get_queue(dev));
+}
+
+extern inline int bdev_hardsect_size(struct block_device *bdev)
+{
+ return queue_hardsect_size(blk_get_queue(to_kdev_t(bdev->bd_dev)));
+}
+
#define blk_finished_io(nsects) do { } while (0)
#define blk_started_io(nsects) do { } while (0)