Add support 32 bit FS_IOC32_{GET|SET}FLAGS compat ioctls
We need 32 bit userspace FS_IOC32_GETFLAGS and FS_IOC32_SETFLAGS compat ioctls for systems such as powerpc64. We use the normal compat ioctl idiom as used by a variety of file systems to provide this support. Signed-off-by: Colin Ian King <colin.king@canonical.com> Signed-off-by: Brian Behlendorf <behlendorf1@llnl.gov> Closes #4477
This commit is contained in:
parent
e4023e42a8
commit
f7b939bdbc
|
@ -24,6 +24,9 @@
|
||||||
*/
|
*/
|
||||||
|
|
||||||
|
|
||||||
|
#ifdef CONFIG_COMPAT
|
||||||
|
#include <linux/compat.h>
|
||||||
|
#endif
|
||||||
#include <sys/dmu_objset.h>
|
#include <sys/dmu_objset.h>
|
||||||
#include <sys/zfs_vfsops.h>
|
#include <sys/zfs_vfsops.h>
|
||||||
#include <sys/zfs_vnops.h>
|
#include <sys/zfs_vnops.h>
|
||||||
|
@ -798,7 +801,17 @@ zpl_ioctl(struct file *filp, unsigned int cmd, unsigned long arg)
|
||||||
static long
|
static long
|
||||||
zpl_compat_ioctl(struct file *filp, unsigned int cmd, unsigned long arg)
|
zpl_compat_ioctl(struct file *filp, unsigned int cmd, unsigned long arg)
|
||||||
{
|
{
|
||||||
return (zpl_ioctl(filp, cmd, arg));
|
switch (cmd) {
|
||||||
|
case FS_IOC32_GETFLAGS:
|
||||||
|
cmd = FS_IOC_GETFLAGS;
|
||||||
|
break;
|
||||||
|
case FS_IOC32_SETFLAGS:
|
||||||
|
cmd = FS_IOC_SETFLAGS;
|
||||||
|
break;
|
||||||
|
default:
|
||||||
|
return (-ENOTTY);
|
||||||
|
}
|
||||||
|
return (zpl_ioctl(filp, cmd, (unsigned long)compat_ptr(arg)));
|
||||||
}
|
}
|
||||||
#endif /* CONFIG_COMPAT */
|
#endif /* CONFIG_COMPAT */
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue