[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: Christoph Hellwig <hch@lst.de> Cc: Martin Schwidefsky <schwidefsky@de.ibm.com> Signed-off-by: Andrew Morton <akpm@osdl.org> Signed-off-by: Linus Torvalds <torvalds@osdl.org>
This commit is contained in:
parent
ec3cad9690
commit
8262037f40
|
@ -42,27 +42,6 @@ struct ioctl_trans ioctl_start[] = {
|
|||
#include <linux/compat_ioctl.h>
|
||||
#define DECLARES
|
||||
#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);
|
||||
|
|
|
@ -1751,6 +1751,7 @@ dasd_device_operations = {
|
|||
.open = dasd_open,
|
||||
.release = dasd_release,
|
||||
.ioctl = dasd_ioctl,
|
||||
.compat_ioctl = dasd_compat_ioctl,
|
||||
.getgeo = dasd_getgeo,
|
||||
};
|
||||
|
||||
|
|
|
@ -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_unregister(struct module *, int, dasd_ioctl_fn_t);
|
||||
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 */
|
||||
int dasd_proc_init(void);
|
||||
|
|
|
@ -118,6 +118,18 @@ dasd_ioctl(struct inode *inp, struct file *filp,
|
|||
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
|
||||
dasd_ioctl_api_version(struct block_device *bdev, int no, long args)
|
||||
{
|
||||
|
|
Loading…
Reference in a new issue