Commit 7006f6ec authored by Alasdair G Kergon's avatar Alasdair G Kergon Committed by Linus Torvalds
Browse files

[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: default avatarAlasdair G Kergon <agk@redhat.com>
Signed-off-by: default avatarAndrew Morton <akpm@osdl.org>
Signed-off-by: default avatarLinus Torvalds <torvalds@osdl.org>
parent 9af4aa30
Loading
Loading
Loading
Loading
+3 −2
Original line number Diff line number Diff line
@@ -199,7 +199,7 @@ 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,
int blkdev_driver_ioctl(struct inode *inode, struct file *file,
			struct gendisk *disk, unsigned cmd, unsigned long arg)
{
	int ret;
@@ -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)
+1 −1
Original line number Diff line number Diff line
@@ -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 = {
+2 −1
Original line number Diff line number Diff line
@@ -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);
}

/*-----------------------------------------------------------------
+3 −0
Original line number Diff line number Diff line
@@ -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 *);