]> git.neil.brown.name Git - history.git/commitdiff
[PATCH] (5/15) big struct block_device * push (first series)
authorAlexander Viro <viro@math.psu.edu>
Thu, 25 Apr 2002 06:49:55 +0000 (23:49 -0700)
committerLinus Torvalds <torvalds@penguin.transmeta.com>
Thu, 25 Apr 2002 06:49:55 +0000 (23:49 -0700)
 - switch blk_{get,set}_readahead() to struct block_device *

drivers/block/blkpg.c
drivers/block/ll_rw_blk.c
drivers/md/md.c
include/linux/blkdev.h
mm/readahead.c

index 45460ec37ce2a19c64218ab6bb42584c6d239977..23c9896a9421c2b563d822f757eece89afcdc1ac 100644 (file)
@@ -240,13 +240,13 @@ int blk_ioctl(struct block_device *bdev, unsigned int cmd, unsigned long arg)
                case BLKFRASET:
                        if(!capable(CAP_SYS_ADMIN))
                                return -EACCES;
-                       return blk_set_readahead(dev, arg);
+                       return blk_set_readahead(bdev, arg);
 
                case BLKRAGET:
                case BLKFRAGET:
                        if (!arg)
                                return -EINVAL;
-                       return put_user(blk_get_readahead(dev), (long *)arg);
+                       return put_user(blk_get_readahead(bdev), (long *)arg);
 
                case BLKSECTGET:
                        if ((q = blk_get_queue(dev)) == NULL)
index dfe0ceb3bc5572837a9184e060d4441f57ee9c4c..5d6c137c7f2329ad57f1042878257121b0fdd8fa 100644 (file)
@@ -115,13 +115,14 @@ inline request_queue_t *blk_get_queue(kdev_t dev)
  *
  * Returns zero on success, else negative errno
  */
-int blk_set_readahead(kdev_t dev, unsigned sectors)
+int blk_set_readahead(struct block_device *bdev, unsigned sectors)
 {
        int ret = -EINVAL;
-       request_queue_t *q = blk_get_queue(dev);
+       request_queue_t *q = blk_get_queue(to_kdev_t(bdev->bd_dev));
 
        if (q) {
                q->ra_sectors = sectors;
+               blk_put_queue(q);
                ret = 0;
        }
        return ret;
@@ -139,13 +140,15 @@ int blk_set_readahead(kdev_t dev, unsigned sectors)
  * Will return zero if the queue has never had its readahead
  * setting altered.
  */
-unsigned blk_get_readahead(kdev_t dev)
+unsigned blk_get_readahead(struct block_device *bdev)
 {
        unsigned ret = 0;
-       request_queue_t *q = blk_get_queue(dev);
+       request_queue_t *q = blk_get_queue(to_kdev_t(bdev->bd_dev));
 
-       if (q)
+       if (q) {
                ret = q->ra_sectors;
+               blk_put_queue(q);
+       }
        return ret;
 }
 
index 90edd49d76f645210d57572e656baf3e97b585de..8c2ce9fea21e0ffd750b19a6d551cae8308d6207 100644 (file)
@@ -1577,7 +1577,7 @@ static int device_size_calculation(mddev_t * mddev)
        if (!md_size[mdidx(mddev)])
                md_size[mdidx(mddev)] = sb->size * data_disks;
 
-       readahead = (blk_get_readahead(rdev->dev) * 512) / PAGE_SIZE;
+       readahead = (blk_get_readahead(rdev->bdev) * 512) / PAGE_SIZE;
        if (!sb->level || (sb->level == 4) || (sb->level == 5)) {
                readahead = (mddev->sb->chunk_size>>PAGE_SHIFT) * 4 * data_disks;
                if (readahead < data_disks * (MAX_SECTORS>>(PAGE_SHIFT-9))*2)
index b415b4e31a4942ad046a173538155f17aec6c9b2..edd2cb838d53ae6e71eb910f5cf9daa20ae12042 100644 (file)
@@ -314,8 +314,8 @@ extern void blk_queue_hardsect_size(request_queue_t *q, unsigned short);
 extern void blk_queue_segment_boundary(request_queue_t *q, unsigned long);
 extern void blk_queue_assign_lock(request_queue_t *q, spinlock_t *);
 extern void blk_queue_prep_rq(request_queue_t *q, prep_rq_fn *pfn);
-extern int blk_set_readahead(kdev_t dev, unsigned sectors);
-extern unsigned blk_get_readahead(kdev_t dev);
+extern int blk_set_readahead(struct block_device *bdev, unsigned sectors);
+extern unsigned blk_get_readahead(struct block_device *bdev);
 
 extern int blk_rq_map_sg(request_queue_t *, struct request *, struct scatterlist *);
 extern void blk_dump_rq_flags(struct request *, char *);
index 6663da13db2ea278d67c950fba1dc697359afd28..5d23b83206e17a224a123dcfca03fbe951893cc1 100644 (file)
@@ -35,10 +35,11 @@ static int get_max_readahead(struct inode *inode)
 {
        unsigned blk_ra_kbytes = 0;
 
-       blk_ra_kbytes = blk_get_readahead(inode->i_dev) / 2;
-       if (blk_ra_kbytes < VM_MIN_READAHEAD)
-               blk_ra_kbytes = VM_MAX_READAHEAD;
-
+       if (inode->i_sb->s_bdev) {
+               blk_ra_kbytes = blk_get_readahead(inode->i_sb->s_bdev) / 2;
+               if (blk_ra_kbytes < VM_MIN_READAHEAD)
+                       blk_ra_kbytes = VM_MAX_READAHEAD;
+       }
        return blk_ra_kbytes >> (PAGE_CACHE_SHIFT - 10);
 }