forked from Minki/linux
[PATCH] dm: export blkdev_driver_ioctl
Export blkdev_driver_ioctl for device-mapper. If we get as far as the device-mapper ioctl handler, we know the ioctl is not a standard block layer BLK* one, so we don't need to check for them a second time and can call blkdev_driver_ioctl() directly. Signed-off-by: Alasdair G Kergon <agk@redhat.com> Signed-off-by: Andrew Morton <akpm@osdl.org> Signed-off-by: Linus Torvalds <torvalds@osdl.org>
This commit is contained in:
parent
9af4aa30b7
commit
7006f6eca8
@ -199,8 +199,8 @@ static int blkdev_locked_ioctl(struct file *file, struct block_device *bdev,
|
||||
return -ENOIOCTLCMD;
|
||||
}
|
||||
|
||||
static int blkdev_driver_ioctl(struct inode *inode, struct file *file,
|
||||
struct gendisk *disk, unsigned cmd, unsigned long arg)
|
||||
int blkdev_driver_ioctl(struct inode *inode, struct file *file,
|
||||
struct gendisk *disk, unsigned cmd, unsigned long arg)
|
||||
{
|
||||
int ret;
|
||||
if (disk->fops->unlocked_ioctl)
|
||||
@ -215,6 +215,7 @@ static int blkdev_driver_ioctl(struct inode *inode, struct file *file,
|
||||
|
||||
return -ENOTTY;
|
||||
}
|
||||
EXPORT_SYMBOL_GPL(blkdev_driver_ioctl);
|
||||
|
||||
int blkdev_ioctl(struct inode *inode, struct file *file, unsigned cmd,
|
||||
unsigned long arg)
|
||||
|
@ -105,7 +105,7 @@ 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;
|
||||
|
||||
return blkdev_ioctl(bdev->bd_inode, filp, cmd, arg);
|
||||
return blkdev_driver_ioctl(bdev->bd_inode, filp, bdev->bd_disk, cmd, arg);
|
||||
}
|
||||
|
||||
static struct target_type linear_target = {
|
||||
|
@ -1290,7 +1290,8 @@ static int multipath_ioctl(struct dm_target *ti, struct inode *inode,
|
||||
|
||||
spin_unlock_irqrestore(&m->lock, flags);
|
||||
|
||||
return r ? : blkdev_ioctl(bdev->bd_inode, filp, cmd, arg);
|
||||
return r ? : blkdev_driver_ioctl(bdev->bd_inode, filp, bdev->bd_disk,
|
||||
cmd, arg);
|
||||
}
|
||||
|
||||
/*-----------------------------------------------------------------
|
||||
|
@ -1523,6 +1523,9 @@ extern const struct file_operations def_fifo_fops;
|
||||
#ifdef CONFIG_BLOCK
|
||||
extern int ioctl_by_bdev(struct block_device *, unsigned, unsigned long);
|
||||
extern int blkdev_ioctl(struct inode *, struct file *, unsigned, unsigned long);
|
||||
extern int blkdev_driver_ioctl(struct inode *inode, struct file *file,
|
||||
struct gendisk *disk, unsigned cmd,
|
||||
unsigned long arg);
|
||||
extern long compat_blkdev_ioctl(struct file *, unsigned, unsigned long);
|
||||
extern int blkdev_get(struct block_device *, mode_t, unsigned);
|
||||
extern int blkdev_put(struct block_device *);
|
||||
|
Loading…
Reference in New Issue
Block a user