Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 52a700c5 authored by David Howells's avatar David Howells Committed by Jens Axboe
Browse files

[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: default avatarDavid Howells <dhowells@redhat.com>
Signed-off-by: default avatarJens Axboe <axboe@kernel.dk>
parent e322ff07
Loading
Loading
Loading
Loading
+0 −27
Original line number Original line Diff line number Diff line
@@ -45,8 +45,6 @@
#include <linux/tty.h>
#include <linux/tty.h>
#include <linux/vt_kern.h>
#include <linux/vt_kern.h>
#include <linux/fb.h>
#include <linux/fb.h>
#include <linux/ext3_jbd.h>
#include <linux/ext3_fs.h>
#include <linux/videodev.h>
#include <linux/videodev.h>
#include <linux/netdevice.h>
#include <linux/netdevice.h>
#include <linux/raw.h>
#include <linux/raw.h>
@@ -158,22 +156,6 @@ static int rw_long(unsigned int fd, unsigned int cmd, unsigned long arg)
	return err;
	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 {
struct compat_video_event {
	int32_t		type;
	int32_t		type;
	compat_time_t	timestamp;
	compat_time_t	timestamp;
@@ -2712,15 +2694,6 @@ HANDLE_IOCTL(PIO_UNIMAP, do_unimap_ioctl)
HANDLE_IOCTL(GIO_UNIMAP, do_unimap_ioctl)
HANDLE_IOCTL(GIO_UNIMAP, do_unimap_ioctl)
HANDLE_IOCTL(KDFONTOP, do_kdfontop_ioctl)
HANDLE_IOCTL(KDFONTOP, do_kdfontop_ioctl)
#endif
#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. */
/* One SMB ioctl needs translations. */
#define SMB_IOC_GETMOUNTUID_32 _IOR('u', 1, compat_uid_t)
#define SMB_IOC_GETMOUNTUID_32 _IOR('u', 1, compat_uid_t)
HANDLE_IOCTL(SMB_IOC_GETMOUNTUID_32, do_smb_getmountuid)
HANDLE_IOCTL(SMB_IOC_GETMOUNTUID_32, do_smb_getmountuid)
+3 −0
Original line number Original line Diff line number Diff line
@@ -44,6 +44,9 @@ const struct file_operations ext3_dir_operations = {
	.read		= generic_read_dir,
	.read		= generic_read_dir,
	.readdir	= ext3_readdir,		/* we take BKL. needed?*/
	.readdir	= ext3_readdir,		/* we take BKL. needed?*/
	.ioctl		= ext3_ioctl,		/* BKL held */
	.ioctl		= ext3_ioctl,		/* BKL held */
#ifdef CONFIG_COMPAT
	.compat_ioctl	= ext3_compat_ioctl,
#endif
	.fsync		= ext3_sync_file,	/* BKL held */
	.fsync		= ext3_sync_file,	/* BKL held */
#ifdef CONFIG_EXT3_INDEX
#ifdef CONFIG_EXT3_INDEX
	.release	= ext3_release_dir,
	.release	= ext3_release_dir,
+3 −0
Original line number Original line Diff line number Diff line
@@ -114,6 +114,9 @@ const struct file_operations ext3_file_operations = {
	.readv		= generic_file_readv,
	.readv		= generic_file_readv,
	.writev		= generic_file_writev,
	.writev		= generic_file_writev,
	.ioctl		= ext3_ioctl,
	.ioctl		= ext3_ioctl,
#ifdef CONFIG_COMPAT
	.compat_ioctl	= ext3_compat_ioctl,
#endif
	.mmap		= generic_file_mmap,
	.mmap		= generic_file_mmap,
	.open		= generic_file_open,
	.open		= generic_file_open,
	.release	= ext3_release_file,
	.release	= ext3_release_file,
+54 −1
Original line number Original line Diff line number Diff line
@@ -13,9 +13,10 @@
#include <linux/ext3_fs.h>
#include <linux/ext3_fs.h>
#include <linux/ext3_jbd.h>
#include <linux/ext3_jbd.h>
#include <linux/time.h>
#include <linux/time.h>
#include <linux/compat.h>
#include <linux/smp_lock.h>
#include <asm/uaccess.h>
#include <asm/uaccess.h>



int ext3_ioctl (struct inode * inode, struct file * filp, unsigned int cmd,
int ext3_ioctl (struct inode * inode, struct file * filp, unsigned int cmd,
		unsigned long arg)
		unsigned long arg)
{
{
@@ -252,3 +253,55 @@ flags_err:
		return -ENOTTY;
		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
+6 −0
Original line number Original line Diff line number Diff line
@@ -233,6 +233,8 @@ struct ext3_new_group_data {
/*
/*
 * ioctl commands in 32 bit emulation
 * 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_GETVERSION		_IOR('f', 3, int)
#define EXT3_IOC32_SETVERSION		_IOW('f', 4, int)
#define EXT3_IOC32_SETVERSION		_IOW('f', 4, int)
#define EXT3_IOC32_GETRSVSZ		_IOR('f', 5, int)
#define EXT3_IOC32_GETRSVSZ		_IOR('f', 5, int)
@@ -241,6 +243,9 @@ struct ext3_new_group_data {
#ifdef CONFIG_JBD_DEBUG
#ifdef CONFIG_JBD_DEBUG
#define EXT3_IOC32_WAIT_FOR_READONLY	_IOR('f', 99, int)
#define EXT3_IOC32_WAIT_FOR_READONLY	_IOR('f', 99, int)
#endif
#endif
#define EXT3_IOC32_GETVERSION_OLD	FS_IOC32_GETVERSION
#define EXT3_IOC32_SETVERSION_OLD	FS_IOC32_SETVERSION



/*
/*
 *  Mount options
 *  Mount options
@@ -824,6 +829,7 @@ extern void ext3_set_aops(struct inode *inode);
/* ioctl.c */
/* ioctl.c */
extern int ext3_ioctl (struct inode *, struct file *, unsigned int,
extern int ext3_ioctl (struct inode *, struct file *, unsigned int,
		       unsigned long);
		       unsigned long);
extern long ext3_compat_ioctl (struct file *, unsigned int, unsigned long);


/* namei.c */
/* namei.c */
extern int ext3_orphan_add(handle_t *, struct inode *);
extern int ext3_orphan_add(handle_t *, struct inode *);