[PATCH] BLOCK: Move the Ext3 device ioctl compat stuff to the Ext3 driver [try #6]
Move the Ext3 device ioctl compat stuff from fs/compat_ioctl.c to the Ext3 driver so that the Ext3 header file doesn't need to be included. Signed-Off-By: David Howells <dhowells@redhat.com> Signed-off-by: Jens Axboe <axboe@kernel.dk>
This commit is contained in:
parent
e322ff07fb
commit
52a700c567
|
@ -45,8 +45,6 @@
|
|||
#include <linux/tty.h>
|
||||
#include <linux/vt_kern.h>
|
||||
#include <linux/fb.h>
|
||||
#include <linux/ext3_jbd.h>
|
||||
#include <linux/ext3_fs.h>
|
||||
#include <linux/videodev.h>
|
||||
#include <linux/netdevice.h>
|
||||
#include <linux/raw.h>
|
||||
|
@ -158,22 +156,6 @@ static int rw_long(unsigned int fd, unsigned int cmd, unsigned long arg)
|
|||
return err;
|
||||
}
|
||||
|
||||
static int do_ext3_ioctl(unsigned int fd, unsigned int cmd, unsigned long arg)
|
||||
{
|
||||
/* These are just misnamed, they actually get/put from/to user an int */
|
||||
switch (cmd) {
|
||||
case EXT3_IOC32_GETVERSION: cmd = EXT3_IOC_GETVERSION; break;
|
||||
case EXT3_IOC32_SETVERSION: cmd = EXT3_IOC_SETVERSION; break;
|
||||
case EXT3_IOC32_GETRSVSZ: cmd = EXT3_IOC_GETRSVSZ; break;
|
||||
case EXT3_IOC32_SETRSVSZ: cmd = EXT3_IOC_SETRSVSZ; break;
|
||||
case EXT3_IOC32_GROUP_EXTEND: cmd = EXT3_IOC_GROUP_EXTEND; break;
|
||||
#ifdef CONFIG_JBD_DEBUG
|
||||
case EXT3_IOC32_WAIT_FOR_READONLY: cmd = EXT3_IOC_WAIT_FOR_READONLY; break;
|
||||
#endif
|
||||
}
|
||||
return sys_ioctl(fd, cmd, (unsigned long)compat_ptr(arg));
|
||||
}
|
||||
|
||||
struct compat_video_event {
|
||||
int32_t type;
|
||||
compat_time_t timestamp;
|
||||
|
@ -2712,15 +2694,6 @@ HANDLE_IOCTL(PIO_UNIMAP, do_unimap_ioctl)
|
|||
HANDLE_IOCTL(GIO_UNIMAP, do_unimap_ioctl)
|
||||
HANDLE_IOCTL(KDFONTOP, do_kdfontop_ioctl)
|
||||
#endif
|
||||
HANDLE_IOCTL(EXT3_IOC32_GETVERSION, do_ext3_ioctl)
|
||||
HANDLE_IOCTL(EXT3_IOC32_SETVERSION, do_ext3_ioctl)
|
||||
HANDLE_IOCTL(EXT3_IOC32_GETRSVSZ, do_ext3_ioctl)
|
||||
HANDLE_IOCTL(EXT3_IOC32_SETRSVSZ, do_ext3_ioctl)
|
||||
HANDLE_IOCTL(EXT3_IOC32_GROUP_EXTEND, do_ext3_ioctl)
|
||||
COMPATIBLE_IOCTL(EXT3_IOC_GROUP_ADD)
|
||||
#ifdef CONFIG_JBD_DEBUG
|
||||
HANDLE_IOCTL(EXT3_IOC32_WAIT_FOR_READONLY, do_ext3_ioctl)
|
||||
#endif
|
||||
/* One SMB ioctl needs translations. */
|
||||
#define SMB_IOC_GETMOUNTUID_32 _IOR('u', 1, compat_uid_t)
|
||||
HANDLE_IOCTL(SMB_IOC_GETMOUNTUID_32, do_smb_getmountuid)
|
||||
|
|
|
@ -44,6 +44,9 @@ const struct file_operations ext3_dir_operations = {
|
|||
.read = generic_read_dir,
|
||||
.readdir = ext3_readdir, /* we take BKL. needed?*/
|
||||
.ioctl = ext3_ioctl, /* BKL held */
|
||||
#ifdef CONFIG_COMPAT
|
||||
.compat_ioctl = ext3_compat_ioctl,
|
||||
#endif
|
||||
.fsync = ext3_sync_file, /* BKL held */
|
||||
#ifdef CONFIG_EXT3_INDEX
|
||||
.release = ext3_release_dir,
|
||||
|
|
|
@ -114,6 +114,9 @@ const struct file_operations ext3_file_operations = {
|
|||
.readv = generic_file_readv,
|
||||
.writev = generic_file_writev,
|
||||
.ioctl = ext3_ioctl,
|
||||
#ifdef CONFIG_COMPAT
|
||||
.compat_ioctl = ext3_compat_ioctl,
|
||||
#endif
|
||||
.mmap = generic_file_mmap,
|
||||
.open = generic_file_open,
|
||||
.release = ext3_release_file,
|
||||
|
|
|
@ -13,9 +13,10 @@
|
|||
#include <linux/ext3_fs.h>
|
||||
#include <linux/ext3_jbd.h>
|
||||
#include <linux/time.h>
|
||||
#include <linux/compat.h>
|
||||
#include <linux/smp_lock.h>
|
||||
#include <asm/uaccess.h>
|
||||
|
||||
|
||||
int ext3_ioctl (struct inode * inode, struct file * filp, unsigned int cmd,
|
||||
unsigned long arg)
|
||||
{
|
||||
|
@ -252,3 +253,55 @@ flags_err:
|
|||
return -ENOTTY;
|
||||
}
|
||||
}
|
||||
|
||||
#ifdef CONFIG_COMPAT
|
||||
long ext3_compat_ioctl(struct file *file, unsigned int cmd, unsigned long arg)
|
||||
{
|
||||
struct inode *inode = file->f_dentry->d_inode;
|
||||
int ret;
|
||||
|
||||
/* These are just misnamed, they actually get/put from/to user an int */
|
||||
switch (cmd) {
|
||||
case EXT3_IOC32_GETFLAGS:
|
||||
cmd = EXT3_IOC_GETFLAGS;
|
||||
break;
|
||||
case EXT3_IOC32_SETFLAGS:
|
||||
cmd = EXT3_IOC_SETFLAGS;
|
||||
break;
|
||||
case EXT3_IOC32_GETVERSION:
|
||||
cmd = EXT3_IOC_GETVERSION;
|
||||
break;
|
||||
case EXT3_IOC32_SETVERSION:
|
||||
cmd = EXT3_IOC_SETVERSION;
|
||||
break;
|
||||
case EXT3_IOC32_GROUP_EXTEND:
|
||||
cmd = EXT3_IOC_GROUP_EXTEND;
|
||||
break;
|
||||
case EXT3_IOC32_GETVERSION_OLD:
|
||||
cmd = EXT3_IOC_GETVERSION_OLD;
|
||||
break;
|
||||
case EXT3_IOC32_SETVERSION_OLD:
|
||||
cmd = EXT3_IOC_SETVERSION_OLD;
|
||||
break;
|
||||
#ifdef CONFIG_JBD_DEBUG
|
||||
case EXT3_IOC32_WAIT_FOR_READONLY:
|
||||
cmd = EXT3_IOC_WAIT_FOR_READONLY;
|
||||
break;
|
||||
#endif
|
||||
case EXT3_IOC32_GETRSVSZ:
|
||||
cmd = EXT3_IOC_GETRSVSZ;
|
||||
break;
|
||||
case EXT3_IOC32_SETRSVSZ:
|
||||
cmd = EXT3_IOC_SETRSVSZ;
|
||||
break;
|
||||
case EXT3_IOC_GROUP_ADD:
|
||||
break;
|
||||
default:
|
||||
return -ENOIOCTLCMD;
|
||||
}
|
||||
lock_kernel();
|
||||
ret = ext3_ioctl(inode, file, cmd, (unsigned long) compat_ptr(arg));
|
||||
unlock_kernel();
|
||||
return ret;
|
||||
}
|
||||
#endif
|
||||
|
|
|
@ -233,6 +233,8 @@ struct ext3_new_group_data {
|
|||
/*
|
||||
* ioctl commands in 32 bit emulation
|
||||
*/
|
||||
#define EXT3_IOC32_GETFLAGS FS_IOC32_GETFLAGS
|
||||
#define EXT3_IOC32_SETFLAGS FS_IOC32_SETFLAGS
|
||||
#define EXT3_IOC32_GETVERSION _IOR('f', 3, int)
|
||||
#define EXT3_IOC32_SETVERSION _IOW('f', 4, int)
|
||||
#define EXT3_IOC32_GETRSVSZ _IOR('f', 5, int)
|
||||
|
@ -241,6 +243,9 @@ struct ext3_new_group_data {
|
|||
#ifdef CONFIG_JBD_DEBUG
|
||||
#define EXT3_IOC32_WAIT_FOR_READONLY _IOR('f', 99, int)
|
||||
#endif
|
||||
#define EXT3_IOC32_GETVERSION_OLD FS_IOC32_GETVERSION
|
||||
#define EXT3_IOC32_SETVERSION_OLD FS_IOC32_SETVERSION
|
||||
|
||||
|
||||
/*
|
||||
* Mount options
|
||||
|
@ -824,6 +829,7 @@ extern void ext3_set_aops(struct inode *inode);
|
|||
/* ioctl.c */
|
||||
extern int ext3_ioctl (struct inode *, struct file *, unsigned int,
|
||||
unsigned long);
|
||||
extern long ext3_compat_ioctl (struct file *, unsigned int, unsigned long);
|
||||
|
||||
/* namei.c */
|
||||
extern int ext3_orphan_add(handle_t *, struct inode *);
|
||||
|
|
Loading…
Reference in New Issue