From: Brian Behlendorf Date: Wed, 26 Jun 2013 19:53:04 +0000 (-0700) Subject: Return -EOPNOTSUPP for ZFS_IOC_{GET|SET}FLAGS X-Git-Tag: zfs-0.6.2~74 X-Git-Url: https://granicus.if.org/sourcecode?a=commitdiff_plain;h=88c283952f0bfeab54612f9ce666601d83c4244f;p=zfs 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 --- diff --git a/include/linux/vfs_compat.h b/include/linux/vfs_compat.h index c9fa76ece..bccf0d01f 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 db6a72c98..c6d97db50 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 };