diff options
author | Arnd Bergmann <arnd@arndb.de> | 2005-06-23 03:10:15 -0400 |
---|---|---|
committer | Linus Torvalds <torvalds@ppc970.osdl.org> | 2005-06-23 12:45:32 -0400 |
commit | bb93e3a52f8db7210258a1a2134cced0b78a46e1 (patch) | |
tree | b6def4c3fe5624769de64e242bb2007fffea55c8 /fs | |
parent | 0d77e5a2c23da734f5a7925f64afa1c2ed92e0f9 (diff) |
[PATCH] block: add unlocked_ioctl support for block devices
This patch allows block device drivers to convert their ioctl functions to
unlocked_ioctl() like character devices and other subsystems. All
functions that were called with the BKL held before are still used that
way, but I would not be surprised if it could be removed from the ioctl
functions in drivers/block/ioctl.c themselves.
As a side note, I found that compat_blkdev_ioctl() acquires the BKL as
well, which looks like a bug. I have checked that every user of
disk->fops->compat_ioctl() in the current git tree gets the BKL itself, so
it could easily be removed from compat_blkdev_ioctl().
Signed-off-by: Arnd Bergmann <arnd@arndb.de>
Signed-off-by: Andrew Morton <akpm@osdl.org>
Signed-off-by: Linus Torvalds <torvalds@osdl.org>
Diffstat (limited to 'fs')
-rw-r--r-- | fs/block_dev.c | 5 |
1 files changed, 2 insertions, 3 deletions
diff --git a/fs/block_dev.c b/fs/block_dev.c index c0cbd1bc1a02..e0df94c37b7e 100644 --- a/fs/block_dev.c +++ b/fs/block_dev.c | |||
@@ -777,8 +777,7 @@ static ssize_t blkdev_file_aio_write(struct kiocb *iocb, const char __user *buf, | |||
777 | return generic_file_aio_write_nolock(iocb, &local_iov, 1, &iocb->ki_pos); | 777 | return generic_file_aio_write_nolock(iocb, &local_iov, 1, &iocb->ki_pos); |
778 | } | 778 | } |
779 | 779 | ||
780 | static int block_ioctl(struct inode *inode, struct file *file, unsigned cmd, | 780 | static long block_ioctl(struct file *file, unsigned cmd, unsigned long arg) |
781 | unsigned long arg) | ||
782 | { | 781 | { |
783 | return blkdev_ioctl(file->f_mapping->host, file, cmd, arg); | 782 | return blkdev_ioctl(file->f_mapping->host, file, cmd, arg); |
784 | } | 783 | } |
@@ -803,7 +802,7 @@ struct file_operations def_blk_fops = { | |||
803 | .aio_write = blkdev_file_aio_write, | 802 | .aio_write = blkdev_file_aio_write, |
804 | .mmap = generic_file_mmap, | 803 | .mmap = generic_file_mmap, |
805 | .fsync = block_fsync, | 804 | .fsync = block_fsync, |
806 | .ioctl = block_ioctl, | 805 | .unlocked_ioctl = block_ioctl, |
807 | #ifdef CONFIG_COMPAT | 806 | #ifdef CONFIG_COMPAT |
808 | .compat_ioctl = compat_blkdev_ioctl, | 807 | .compat_ioctl = compat_blkdev_ioctl, |
809 | #endif | 808 | #endif |