summaryrefslogtreecommitdiff
path: root/drivers/block/loop.c
diff options
context:
space:
mode:
authorAlexander Viro <viro@math.psu.edu>2002-04-24 23:50:52 -0700
committerLinus Torvalds <torvalds@penguin.transmeta.com>2002-04-24 23:50:52 -0700
commit61e3b7fcb0a88fb82e93b9b5c384ae70e293ded7 (patch)
tree00bd635cbd1e4403785f6a52f3653596ed31b7c8 /drivers/block/loop.c
parent1d5a30dc60ed841f8abcaf5c18a39e9756f9fcd0 (diff)
[PATCH] (12/15) big struct block_device * push (first series)
- block/loop.c - switch ->lo_device to struct block_device *.
Diffstat (limited to 'drivers/block/loop.c')
-rw-r--r--drivers/block/loop.c31
1 files changed, 14 insertions, 17 deletions
diff --git a/drivers/block/loop.c b/drivers/block/loop.c
index e126a8e9932b..1683819aa124 100644
--- a/drivers/block/loop.c
+++ b/drivers/block/loop.c
@@ -155,20 +155,17 @@ struct loop_func_table *xfer_funcs[MAX_LO_CRYPT] = {
#define MAX_DISK_SIZE 1024*1024*1024
static unsigned long
-compute_loop_size(struct loop_device *lo,
- struct dentry * lo_dentry, kdev_t lodev)
+compute_loop_size(struct loop_device *lo, struct dentry * lo_dentry)
{
- loff_t size = 0;
-
- size = lo_dentry->d_inode->i_mapping->host->i_size;
+ loff_t size = lo_dentry->d_inode->i_mapping->host->i_size;
return (size - lo->lo_offset) >> BLOCK_SIZE_BITS;
}
static void figure_loop_size(struct loop_device *lo)
{
loop_sizes[lo->lo_number] = compute_loop_size(lo,
- lo->lo_backing_file->f_dentry,
- lo->lo_device);
+ lo->lo_backing_file->f_dentry);
+
}
static int lo_send(struct loop_device *lo, struct bio *bio, int bsize, loff_t pos)
@@ -287,7 +284,7 @@ static int lo_receive(struct loop_device *lo, struct bio *bio, int bsize, loff_t
static inline int loop_get_bs(struct loop_device *lo)
{
- return block_size(lo->lo_device);
+ return block_size(to_kdev_t(lo->lo_device->bd_dev));
}
static inline unsigned long loop_get_iv(struct loop_device *lo,
@@ -416,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 = lo->lo_device;
+ bio->bi_dev = to_kdev_t(lo->lo_device->bd_dev);
spin_unlock_irq(&lo->lo_lock);
return bio;
@@ -591,7 +588,7 @@ static int loop_set_fd(struct loop_device *lo, struct file *lo_file,
struct file *file;
struct inode *inode;
kdev_t dev = to_kdev_t(bdev->bd_dev);
- kdev_t lo_device;
+ struct block_device *lo_device;
int lo_flags = 0;
int error;
@@ -613,8 +610,8 @@ static int loop_set_fd(struct loop_device *lo, struct file *lo_file,
lo_flags |= LO_FLAGS_READ_ONLY;
if (S_ISBLK(inode->i_mode)) {
- lo_device = inode->i_rdev;
- if (inode->i_bdev == bdev) {
+ lo_device = inode->i_bdev;
+ if (lo_device == bdev) {
error = -EBUSY;
goto out;
}
@@ -630,7 +627,7 @@ static int loop_set_fd(struct loop_device *lo, struct file *lo_file,
if (!aops->prepare_write || !aops->commit_write)
lo_flags |= LO_FLAGS_READ_ONLY;
- lo_device = inode->i_dev;
+ lo_device = inode->i_sb->s_bdev;
lo_flags |= LO_FLAGS_DO_BMAP;
error = 0;
} else
@@ -638,7 +635,7 @@ static int loop_set_fd(struct loop_device *lo, struct file *lo_file,
get_file(file);
- if (IS_RDONLY (inode) || is_read_only(lo_device)
+ if (IS_RDONLY (inode) || is_read_only(to_kdev_t(lo_device->bd_dev))
|| !(lo_file->f_mode & FMODE_WRITE))
lo_flags |= LO_FLAGS_READ_ONLY;
@@ -653,7 +650,7 @@ static int loop_set_fd(struct loop_device *lo, struct file *lo_file,
lo->old_gfp_mask = inode->i_mapping->gfp_mask;
inode->i_mapping->gfp_mask = GFP_NOIO;
- set_blocksize(dev, block_size(lo_device));
+ set_blocksize(dev, block_size(to_kdev_t(lo_device->bd_dev)));
lo->lo_bio = lo->lo_biotail = NULL;
kernel_thread(loop_thread, lo, CLONE_FS | CLONE_FILES | CLONE_SIGHAND);
@@ -724,7 +721,7 @@ static int loop_clr_fd(struct loop_device *lo, struct block_device *bdev)
loop_release_xfer(lo);
lo->transfer = NULL;
lo->ioctl = NULL;
- lo->lo_device = NODEV;
+ lo->lo_device = NULL;
lo->lo_encrypt_type = 0;
lo->lo_offset = 0;
lo->lo_encrypt_key_size = 0;
@@ -796,7 +793,7 @@ static int loop_get_status(struct loop_device *lo, struct loop_info *arg)
info.lo_number = lo->lo_number;
info.lo_device = kdev_t_to_nr(file->f_dentry->d_inode->i_dev);
info.lo_inode = file->f_dentry->d_inode->i_ino;
- info.lo_rdevice = kdev_t_to_nr(lo->lo_device);
+ info.lo_rdevice = lo->lo_device->bd_dev;
info.lo_offset = lo->lo_offset;
info.lo_flags = lo->lo_flags;
strncpy(info.lo_name, lo->lo_name, LO_NAME_SIZE);