From 6cb0fdd5b5a4b82523b778289edfe9a991c1cd32 Mon Sep 17 00:00:00 2001 From: Namjae Jeon Date: Mon, 4 Feb 2013 23:41:41 +0900 Subject: [PATCH] --- yaml --- r: 358999 b: refs/heads/master c: e9750824114ff939d9da299e73651add6aa65456 h: refs/heads/master i: 358997: e74bdca10ffa4fd14605ad8fc94e82858aa8eba7 358995: 031e8ca4e4ab0eefc00b9157e54ae78ab15e685e 358991: 42ce3b22b6774be04c44254eb64becb361d5fd47 v: v3 --- [refs] | 2 +- trunk/fs/f2fs/f2fs.h | 15 +++++++++++++++ trunk/fs/f2fs/file.c | 21 +++++++++++++++++++++ 3 files changed, 37 insertions(+), 1 deletion(-) diff --git a/[refs] b/[refs] index 436a182f0c50..4f9d898f02eb 100644 --- a/[refs] +++ b/[refs] @@ -1,2 +1,2 @@ --- -refs/heads/master: b7250d2d845822466356f7f22a650bf807090d7e +refs/heads/master: e9750824114ff939d9da299e73651add6aa65456 diff --git a/trunk/fs/f2fs/f2fs.h b/trunk/fs/f2fs/f2fs.h index e7e7a29767d6..c3462b69917e 100644 --- a/trunk/fs/f2fs/f2fs.h +++ b/trunk/fs/f2fs/f2fs.h @@ -103,6 +103,20 @@ static inline int update_sits_in_cursum(struct f2fs_summary_block *rs, int i) return before; } +/* + * ioctl commands + */ +#define F2FS_IOC_GETFLAGS FS_IOC_GETFLAGS +#define F2FS_IOC_SETFLAGS FS_IOC_SETFLAGS + +#if defined(__KERNEL__) && defined(CONFIG_COMPAT) +/* + * ioctl commands in 32 bit emulation + */ +#define F2FS_IOC32_GETFLAGS FS_IOC32_GETFLAGS +#define F2FS_IOC32_SETFLAGS FS_IOC32_SETFLAGS +#endif + /* * For INODE and NODE manager */ @@ -850,6 +864,7 @@ void f2fs_truncate(struct inode *); int f2fs_setattr(struct dentry *, struct iattr *); int truncate_hole(struct inode *, pgoff_t, pgoff_t); long f2fs_ioctl(struct file *, unsigned int, unsigned long); +long f2fs_compat_ioctl(struct file *, unsigned int, unsigned long); /* * inode.c diff --git a/trunk/fs/f2fs/file.c b/trunk/fs/f2fs/file.c index 33d1736ee5f9..b7a053d4c6d3 100644 --- a/trunk/fs/f2fs/file.c +++ b/trunk/fs/f2fs/file.c @@ -15,6 +15,7 @@ #include #include #include +#include #include #include @@ -634,6 +635,23 @@ long f2fs_ioctl(struct file *filp, unsigned int cmd, unsigned long arg) } } +#ifdef CONFIG_COMPAT +long f2fs_compat_ioctl(struct file *file, unsigned int cmd, unsigned long arg) +{ + switch (cmd) { + case F2FS_IOC32_GETFLAGS: + cmd = F2FS_IOC_GETFLAGS; + break; + case F2FS_IOC32_SETFLAGS: + cmd = F2FS_IOC_SETFLAGS; + break; + default: + return -ENOIOCTLCMD; + } + return f2fs_ioctl(file, cmd, (unsigned long) compat_ptr(arg)); +} +#endif + const struct file_operations f2fs_file_operations = { .llseek = generic_file_llseek, .read = do_sync_read, @@ -645,6 +663,9 @@ const struct file_operations f2fs_file_operations = { .fsync = f2fs_sync_file, .fallocate = f2fs_fallocate, .unlocked_ioctl = f2fs_ioctl, +#ifdef CONFIG_COMPAT + .compat_ioctl = f2fs_compat_ioctl, +#endif .splice_read = generic_file_splice_read, .splice_write = generic_file_splice_write, };