X-Git-Url: https://err.no/cgi-bin/gitweb.cgi?a=blobdiff_plain;f=drivers%2Fmd%2Fdm-linear.c;h=17753d80ad228022b2575e46ee28f867cfd93d6f;hb=66ee156078697cdc013d46aed3b2fee445c325a1;hp=c58f072ccae6b3c2e90017725b0cad917d9a1554;hpb=ab17ffa440cb54ca64111fa4922ba12496fcc8af;p=linux-2.6 diff --git a/drivers/md/dm-linear.c b/drivers/md/dm-linear.c index c58f072cca..17753d80ad 100644 --- a/drivers/md/dm-linear.c +++ b/drivers/md/dm-linear.c @@ -77,7 +77,7 @@ static int linear_map(struct dm_target *ti, struct bio *bio, bio->bi_bdev = lc->dev->bdev; bio->bi_sector = lc->start + (bio->bi_sector - ti->begin); - return 1; + return DM_MAPIO_REMAPPED; } static int linear_status(struct dm_target *ti, status_type_t type, @@ -104,8 +104,14 @@ static int linear_ioctl(struct dm_target *ti, struct inode *inode, { struct linear_c *lc = (struct linear_c *) ti->private; struct block_device *bdev = lc->dev->bdev; + struct file fake_file = {}; + struct dentry fake_dentry = {}; - return blkdev_ioctl(bdev->bd_inode, filp, cmd, arg); + fake_file.f_mode = lc->dev->mode; + fake_file.f_path.dentry = &fake_dentry; + fake_dentry.d_inode = bdev->bd_inode; + + return blkdev_driver_ioctl(bdev->bd_inode, &fake_file, bdev->bd_disk, cmd, arg); } static struct target_type linear_target = {