From: David Howells <dhowells@redhat.com>
To: axboe@kernel.dk
Cc: linux-fsdevel@vger.kernel.org, linux-kernel@vger.kernel.org,
dhowells@redhat.com
Subject: [PATCH 13/18] [PATCH] BLOCK: Move the Ext2 device ioctl compat stuff to the Ext2 driver [try #3]
Date: Fri, 25 Aug 2006 15:49:44 +0100 [thread overview]
Message-ID: <20060825144944.30722.91487.stgit@warthog.cambridge.redhat.com> (raw)
In-Reply-To: <20060825144916.30722.90944.stgit@warthog.cambridge.redhat.com>
From: David Howells <dhowells@redhat.com>
Move the Ext2 device ioctl compat stuff from fs/compat_ioctl.c to the Ext2
driver so that the Ext2 header file doesn't need to be included.
Signed-Off-By: David Howells <dhowells@redhat.com>
---
fs/compat_ioctl.c | 17 -----------------
fs/ext2/dir.c | 3 +++
fs/ext2/ext2.h | 1 +
fs/ext2/file.c | 6 ++++++
fs/ext2/ioctl.c | 32 ++++++++++++++++++++++++++++++++
5 files changed, 42 insertions(+), 17 deletions(-)
diff --git a/fs/compat_ioctl.c b/fs/compat_ioctl.c
index 5e84342..24d5538 100644
--- a/fs/compat_ioctl.c
+++ b/fs/compat_ioctl.c
@@ -45,7 +45,6 @@ #include <linux/auto_fs4.h>
#include <linux/tty.h>
#include <linux/vt_kern.h>
#include <linux/fb.h>
-#include <linux/ext2_fs.h>
#include <linux/ext3_jbd.h>
#include <linux/ext3_fs.h>
#include <linux/videodev.h>
@@ -159,18 +158,6 @@ static int rw_long(unsigned int fd, unsi
return err;
}
-static int do_ext2_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 EXT2_IOC32_GETFLAGS: cmd = EXT2_IOC_GETFLAGS; break;
- case EXT2_IOC32_SETFLAGS: cmd = EXT2_IOC_SETFLAGS; break;
- case EXT2_IOC32_GETVERSION: cmd = EXT2_IOC_GETVERSION; break;
- case EXT2_IOC32_SETVERSION: cmd = EXT2_IOC_SETVERSION; break;
- }
- return sys_ioctl(fd, cmd, (unsigned long)compat_ptr(arg));
-}
-
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 */
@@ -2727,10 +2714,6 @@ HANDLE_IOCTL(PIO_UNIMAP, do_unimap_ioctl
HANDLE_IOCTL(GIO_UNIMAP, do_unimap_ioctl)
HANDLE_IOCTL(KDFONTOP, do_kdfontop_ioctl)
#endif
-HANDLE_IOCTL(EXT2_IOC32_GETFLAGS, do_ext2_ioctl)
-HANDLE_IOCTL(EXT2_IOC32_SETFLAGS, do_ext2_ioctl)
-HANDLE_IOCTL(EXT2_IOC32_GETVERSION, do_ext2_ioctl)
-HANDLE_IOCTL(EXT2_IOC32_SETVERSION, do_ext2_ioctl)
HANDLE_IOCTL(EXT3_IOC32_GETVERSION, do_ext3_ioctl)
HANDLE_IOCTL(EXT3_IOC32_SETVERSION, do_ext3_ioctl)
HANDLE_IOCTL(EXT3_IOC32_GETRSVSZ, do_ext3_ioctl)
diff --git a/fs/ext2/dir.c b/fs/ext2/dir.c
index 92ea826..3e7a84a 100644
--- a/fs/ext2/dir.c
+++ b/fs/ext2/dir.c
@@ -661,5 +661,8 @@ const struct file_operations ext2_dir_op
.read = generic_read_dir,
.readdir = ext2_readdir,
.ioctl = ext2_ioctl,
+#ifdef CONFIG_COMPAT
+ .compat_ioctl = ext2_compat_ioctl,
+#endif
.fsync = ext2_sync_file,
};
diff --git a/fs/ext2/ext2.h b/fs/ext2/ext2.h
index e65a019..c19ac15 100644
--- a/fs/ext2/ext2.h
+++ b/fs/ext2/ext2.h
@@ -137,6 +137,7 @@ extern void ext2_set_inode_flags(struct
/* ioctl.c */
extern int ext2_ioctl (struct inode *, struct file *, unsigned int,
unsigned long);
+extern long ext2_compat_ioctl(struct file *, unsigned int, unsigned long);
/* namei.c */
struct dentry *ext2_get_parent(struct dentry *child);
diff --git a/fs/ext2/file.c b/fs/ext2/file.c
index 23e2c7c..e8bbed9 100644
--- a/fs/ext2/file.c
+++ b/fs/ext2/file.c
@@ -46,6 +46,9 @@ const struct file_operations ext2_file_o
.aio_read = generic_file_aio_read,
.aio_write = generic_file_aio_write,
.ioctl = ext2_ioctl,
+#ifdef CONFIG_COMPAT
+ .compat_ioctl = ext2_compat_ioctl,
+#endif
.mmap = generic_file_mmap,
.open = generic_file_open,
.release = ext2_release_file,
@@ -63,6 +66,9 @@ const struct file_operations ext2_xip_fi
.read = xip_file_read,
.write = xip_file_write,
.ioctl = ext2_ioctl,
+#ifdef CONFIG_COMPAT
+ .compat_ioctl = ext2_compat_ioctl,
+#endif
.mmap = xip_file_mmap,
.open = generic_file_open,
.release = ext2_release_file,
diff --git a/fs/ext2/ioctl.c b/fs/ext2/ioctl.c
index 3ca9afd..1dfba77 100644
--- a/fs/ext2/ioctl.c
+++ b/fs/ext2/ioctl.c
@@ -11,6 +11,8 @@ #include "ext2.h"
#include <linux/capability.h>
#include <linux/time.h>
#include <linux/sched.h>
+#include <linux/compat.h>
+#include <linux/smp_lock.h>
#include <asm/current.h>
#include <asm/uaccess.h>
@@ -80,3 +82,33 @@ int ext2_ioctl (struct inode * inode, st
return -ENOTTY;
}
}
+
+#ifdef CONFIG_COMPAT
+long ext2_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 EXT2_IOC32_GETFLAGS:
+ cmd = EXT2_IOC_GETFLAGS;
+ break;
+ case EXT2_IOC32_SETFLAGS:
+ cmd = EXT2_IOC_SETFLAGS;
+ break;
+ case EXT2_IOC32_GETVERSION:
+ cmd = EXT2_IOC_GETVERSION;
+ break;
+ case EXT2_IOC32_SETVERSION:
+ cmd = EXT2_IOC_SETVERSION;
+ break;
+ default:
+ return -ENOIOCTLCMD;
+ }
+ lock_kernel();
+ ret = ext2_ioctl(inode, file, cmd, (unsigned long) compat_ptr(arg));
+ unlock_kernel();
+ return ret;
+}
+#endif
next prev parent reply other threads:[~2006-08-25 14:49 UTC|newest]
Thread overview: 19+ messages / expand[flat|nested] mbox.gz Atom feed top
2006-08-25 14:49 [PATCH 00/18] BLOCK: Permit block layer to be disabled [try #3] David Howells
2006-08-25 14:49 ` [PATCH 01/18] [PATCH] BLOCK: Move functions out of buffer code " David Howells
2006-08-25 14:49 ` [PATCH 02/18] [PATCH] BLOCK: Remove duplicate declaration of exit_io_context() " David Howells
2006-08-25 14:49 ` [PATCH 03/18] [PATCH] BLOCK: Stop fallback_migrate_page() from using page_has_buffers() " David Howells
2006-08-25 14:49 ` [PATCH 04/18] [PATCH] BLOCK: Separate the bounce buffering code from the highmem code " David Howells
2006-08-25 14:49 ` [PATCH 05/18] [PATCH] BLOCK: Don't call block_sync_page() from AFS " David Howells
2006-08-25 14:49 ` [PATCH 06/18] [PATCH] BLOCK: Move bdev_cache_init() declaration to headerfile " David Howells
2006-08-25 14:49 ` [PATCH 07/18] [PATCH] BLOCK: Remove dependence on existence of blockdev_superblock " David Howells
2006-08-25 14:49 ` [PATCH 08/18] [PATCH] BLOCK: Dissociate generic_writepages() from mpage stuff " David Howells
2006-08-25 14:49 ` [PATCH 09/18] [PATCH] BLOCK: Move __invalidate_device() to block_dev.c " David Howells
2006-08-25 14:49 ` [PATCH 10/18] [PATCH] BLOCK: Move the loop device ioctl compat stuff to the loop driver " David Howells
2006-08-25 14:49 ` [PATCH 11/18] [PATCH] BLOCK: Move common FS-specific ioctls to linux/fs.h " David Howells
2006-08-25 14:49 ` [PATCH 12/18] [PATCH] BLOCK: Move the ReiserFS device ioctl compat stuff to the ReiserFS driver " David Howells
2006-08-25 14:49 ` David Howells [this message]
2006-08-25 14:49 ` [PATCH 14/18] [PATCH] BLOCK: Move the Ext3 device ioctl compat stuff to the Ext3 " David Howells
2006-08-25 14:49 ` [PATCH 15/18] [PATCH] BLOCK: Move the msdos device ioctl compat stuff to the msdos " David Howells
2006-08-25 14:49 ` [PATCH 16/18] [PATCH] BLOCK: Remove no-longer necessary linux/mpage.h inclusions " David Howells
2006-08-25 14:49 ` [PATCH 17/18] [PATCH] BLOCK: Remove no-longer necessary linux/buffer_head.h " David Howells
2006-08-25 14:49 ` [PATCH 18/18] [PATCH] BLOCK: Make it possible to disable the block layer " David Howells
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20060825144944.30722.91487.stgit@warthog.cambridge.redhat.com \
--to=dhowells@redhat.com \
--cc=axboe@kernel.dk \
--cc=linux-fsdevel@vger.kernel.org \
--cc=linux-kernel@vger.kernel.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).