Commit 8262037f authored by Christoph Hellwig's avatar Christoph Hellwig Committed by Linus Torvalds

[PATCH] add ->compat_ioctl to dasd

Add a compat_ioctl method to the dasd driver so the last entries in
arch/s390/kernel/compat_ioctl.c can go away.  Unlike the previous attempt this
one does not replace the ioctl method with an unlocked_ioctl method so that
the ioctl_by_bdev calls in s390 partition code continue to work.
Signed-off-by: default avatarChristoph Hellwig <hch@lst.de>
Cc: Martin Schwidefsky <schwidefsky@de.ibm.com>
Signed-off-by: default avatarAndrew Morton <akpm@osdl.org>
Signed-off-by: default avatarLinus Torvalds <torvalds@osdl.org>
parent ec3cad96
...@@ -42,27 +42,6 @@ struct ioctl_trans ioctl_start[] = { ...@@ -42,27 +42,6 @@ struct ioctl_trans ioctl_start[] = {
#include <linux/compat_ioctl.h> #include <linux/compat_ioctl.h>
#define DECLARES #define DECLARES
#include "../../../fs/compat_ioctl.c" #include "../../../fs/compat_ioctl.c"
/* s390 only ioctls */
COMPATIBLE_IOCTL(DASDAPIVER)
COMPATIBLE_IOCTL(BIODASDDISABLE)
COMPATIBLE_IOCTL(BIODASDENABLE)
COMPATIBLE_IOCTL(BIODASDRSRV)
COMPATIBLE_IOCTL(BIODASDRLSE)
COMPATIBLE_IOCTL(BIODASDSLCK)
COMPATIBLE_IOCTL(BIODASDINFO)
COMPATIBLE_IOCTL(BIODASDINFO2)
COMPATIBLE_IOCTL(BIODASDFMT)
COMPATIBLE_IOCTL(BIODASDPRRST)
COMPATIBLE_IOCTL(BIODASDQUIESCE)
COMPATIBLE_IOCTL(BIODASDRESUME)
COMPATIBLE_IOCTL(BIODASDPRRD)
COMPATIBLE_IOCTL(BIODASDPSRD)
COMPATIBLE_IOCTL(BIODASDGATTR)
COMPATIBLE_IOCTL(BIODASDSATTR)
COMPATIBLE_IOCTL(BIODASDCMFENABLE)
COMPATIBLE_IOCTL(BIODASDCMFDISABLE)
COMPATIBLE_IOCTL(BIODASDREADALLCMB)
}; };
int ioctl_table_size = ARRAY_SIZE(ioctl_start); int ioctl_table_size = ARRAY_SIZE(ioctl_start);
...@@ -1751,6 +1751,7 @@ dasd_device_operations = { ...@@ -1751,6 +1751,7 @@ dasd_device_operations = {
.open = dasd_open, .open = dasd_open,
.release = dasd_release, .release = dasd_release,
.ioctl = dasd_ioctl, .ioctl = dasd_ioctl,
.compat_ioctl = dasd_compat_ioctl,
.getgeo = dasd_getgeo, .getgeo = dasd_getgeo,
}; };
......
...@@ -527,6 +527,7 @@ void dasd_ioctl_exit(void); ...@@ -527,6 +527,7 @@ void dasd_ioctl_exit(void);
int dasd_ioctl_no_register(struct module *, int, dasd_ioctl_fn_t); int dasd_ioctl_no_register(struct module *, int, dasd_ioctl_fn_t);
int dasd_ioctl_no_unregister(struct module *, int, dasd_ioctl_fn_t); int dasd_ioctl_no_unregister(struct module *, int, dasd_ioctl_fn_t);
int dasd_ioctl(struct inode *, struct file *, unsigned int, unsigned long); int dasd_ioctl(struct inode *, struct file *, unsigned int, unsigned long);
long dasd_compat_ioctl(struct file *, unsigned int, unsigned long);
/* externals in dasd_proc.c */ /* externals in dasd_proc.c */
int dasd_proc_init(void); int dasd_proc_init(void);
......
...@@ -118,6 +118,18 @@ dasd_ioctl(struct inode *inp, struct file *filp, ...@@ -118,6 +118,18 @@ dasd_ioctl(struct inode *inp, struct file *filp,
return -EINVAL; return -EINVAL;
} }
long
dasd_compat_ioctl(struct file *filp, unsigned int cmd, unsigned long arg)
{
int rval;
lock_kernel();
rval = dasd_ioctl(filp->f_dentry->d_inode, filp, cmd, arg);
unlock_kernel();
return (rval == -EINVAL) ? -ENOIOCTLCMD : rval;
}
static int static int
dasd_ioctl_api_version(struct block_device *bdev, int no, long args) dasd_ioctl_api_version(struct block_device *bdev, int no, long args)
{ {
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment