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 <behlendorf1@llnl.gov>
Issue #229
This commit is contained in:
Brian Behlendorf 2013-06-26 12:53:04 -07:00
parent 0c1171dcb5
commit 88c283952f
2 changed files with 32 additions and 0 deletions

View File

@ -149,4 +149,7 @@ typedef int zpl_umode_t;
#define zpl_sget(type, cmp, set, fl, mtd) sget(type, cmp, set, mtd) #define zpl_sget(type, cmp, set, fl, mtd) sget(type, cmp, set, mtd)
#endif /* HAVE_5ARG_SGET */ #endif /* HAVE_5ARG_SGET */
#define ZFS_IOC_GETFLAGS FS_IOC_GETFLAGS
#define ZFS_IOC_SETFLAGS FS_IOC_SETFLAGS
#endif /* _ZFS_VFS_H */ #endif /* _ZFS_VFS_H */

View File

@ -433,6 +433,27 @@ zpl_fallocate(struct file *filp, int mode, loff_t offset, loff_t len)
} }
#endif /* HAVE_FILE_FALLOCATE */ #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 = { const struct address_space_operations zpl_address_space_operations = {
.readpages = zpl_readpages, .readpages = zpl_readpages,
.readpage = zpl_readpage, .readpage = zpl_readpage,
@ -451,6 +472,10 @@ const struct file_operations zpl_file_operations = {
#ifdef HAVE_FILE_FALLOCATE #ifdef HAVE_FILE_FALLOCATE
.fallocate = zpl_fallocate, .fallocate = zpl_fallocate,
#endif /* HAVE_FILE_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 = { const struct file_operations zpl_dir_file_operations = {
@ -458,4 +483,8 @@ const struct file_operations zpl_dir_file_operations = {
.read = generic_read_dir, .read = generic_read_dir,
.readdir = zpl_readdir, .readdir = zpl_readdir,
.fsync = zpl_fsync, .fsync = zpl_fsync,
.unlocked_ioctl = zpl_ioctl,
#ifdef CONFIG_COMPAT
.compat_ioctl = zpl_compat_ioctl,
#endif
}; };