summaryrefslogtreecommitdiff
path: root/drivers/block/loop.c
diff options
context:
space:
mode:
authorAlexander Viro <viro@math.psu.edu>2002-04-24 23:51:04 -0700
committerLinus Torvalds <torvalds@penguin.transmeta.com>2002-04-24 23:51:04 -0700
commit90012e6ec7ead7a4374f86d03ff09c4d14b41ebe (patch)
tree8a57242fa5f17fb284081a671a0ff8c276376adb /drivers/block/loop.c
parent61e3b7fcb0a88fb82e93b9b5c384ae70e293ded7 (diff)
[PATCH] (13/15) big struct block_device * push (first series)
- *NOW* all places that (re)assign ->bi_dev have relevant struct block_device *. ->bi_bdev (struct block_device * equivalent of ->bi_dev) introduced, ->bi_dev removed, users updated.
Diffstat (limited to 'drivers/block/loop.c')
-rw-r--r--drivers/block/loop.c9
1 files changed, 5 insertions, 4 deletions
diff --git a/drivers/block/loop.c b/drivers/block/loop.c
index 1683819aa124..b2b9d7411dfb 100644
--- a/drivers/block/loop.c
+++ b/drivers/block/loop.c
@@ -380,7 +380,7 @@ static struct bio *loop_get_bio(struct loop_device *lo)
static void loop_end_io_transfer(struct bio *bio)
{
struct bio *rbh = bio->bi_private;
- struct loop_device *lo = &loop_dev[minor(rbh->bi_dev)];
+ struct loop_device *lo = &loop_dev[minor(to_kdev_t(rbh->bi_bdev->bd_dev))];
int uptodate = test_bit(BIO_UPTODATE, &bio->bi_flags);
if (!uptodate || bio_rw(bio) == WRITE) {
@@ -413,7 +413,7 @@ out_bh:
bio->bi_sector = rbh->bi_sector + (lo->lo_offset >> 9);
bio->bi_rw = rbh->bi_rw;
spin_lock_irq(&lo->lo_lock);
- bio->bi_dev = to_kdev_t(lo->lo_device->bd_dev);
+ bio->bi_bdev = lo->lo_device;
spin_unlock_irq(&lo->lo_lock);
return bio;
@@ -425,11 +425,12 @@ static int loop_make_request(request_queue_t *q, struct bio *rbh)
struct loop_device *lo;
unsigned long IV;
int rw = bio_rw(rbh);
+ int unit = minor(to_kdev_t(rbh->bi_bdev->bd_dev));
- if (minor(rbh->bi_dev) >= max_loop)
+ if (unit >= max_loop)
goto out;
- lo = &loop_dev[minor(rbh->bi_dev)];
+ lo = &loop_dev[unit];
spin_lock_irq(&lo->lo_lock);
if (lo->lo_state != Lo_bound)
goto inactive;