From 88c283952f0bfeab54612f9ce666601d83c4244f Mon Sep 17 00:00:00 2001 From: Brian Behlendorf Date: Wed, 26 Jun 2013 12:53:04 -0700 Subject: [PATCH] Return -EOPNOTSUPP for ZFS_IOC_{GET|SET}FLAGS Until these hooks are fully implemented return the expected -EOPNOTSUPP error to indicate they are not functional. This allows test suites such as xfstests to cleanly skip testing this functionality until it's implemented. Signed-off-by: Brian Behlendorf Issue #229 --- include/linux/vfs_compat.h | 3 +++ module/zfs/zpl_file.c | 29 +++++++++++++++++++++++++++++ 2 files changed, 32 insertions(+) diff --git a/include/linux/vfs_compat.h b/include/linux/vfs_compat.h index c9fa76e..bccf0d0 100644 --- a/include/linux/vfs_compat.h +++ b/include/linux/vfs_compat.h @@ -149,4 +149,7 @@ typedef int zpl_umode_t; #define zpl_sget(type, cmp, set, fl, mtd) sget(type, cmp, set, mtd) #endif /* HAVE_5ARG_SGET */ +#define ZFS_IOC_GETFLAGS FS_IOC_GETFLAGS +#define ZFS_IOC_SETFLAGS FS_IOC_SETFLAGS + #endif /* _ZFS_VFS_H */ diff --git a/module/zfs/zpl_file.c b/module/zfs/zpl_file.c index db6a72c..c6d97db 100644 --- a/module/zfs/zpl_file.c +++ b/module/zfs/zpl_file.c @@ -433,6 +433,27 @@ zpl_fallocate(struct file *filp, int mode, loff_t offset, loff_t len) } #endif /* HAVE_FILE_FALLOCATE */ +static long +zpl_ioctl(struct file *filp, unsigned int cmd, unsigned long arg) +{ + switch (cmd) { + case ZFS_IOC_GETFLAGS: + case ZFS_IOC_SETFLAGS: + return (-EOPNOTSUPP); + default: + return (-ENOTTY); + } +} + +#ifdef CONFIG_COMPAT +static long +zpl_compat_ioctl(struct file *filp, unsigned int cmd, unsigned long arg) +{ + return zpl_ioctl(filp, cmd, arg); +} +#endif /* CONFIG_COMPAT */ + + const struct address_space_operations zpl_address_space_operations = { .readpages = zpl_readpages, .readpage = zpl_readpage, @@ -451,6 +472,10 @@ const struct file_operations zpl_file_operations = { #ifdef HAVE_FILE_FALLOCATE .fallocate = zpl_fallocate, #endif /* HAVE_FILE_FALLOCATE */ + .unlocked_ioctl = zpl_ioctl, +#ifdef CONFIG_COMPAT + .compat_ioctl = zpl_compat_ioctl, +#endif }; const struct file_operations zpl_dir_file_operations = { @@ -458,4 +483,8 @@ const struct file_operations zpl_dir_file_operations = { .read = generic_read_dir, .readdir = zpl_readdir, .fsync = zpl_fsync, + .unlocked_ioctl = zpl_ioctl, +#ifdef CONFIG_COMPAT + .compat_ioctl = zpl_compat_ioctl, +#endif }; -- 1.8.3.1