ocfs2: Implement compat_ioctl()
We need this to support 32 bit system calls on 64 bit kernels. Signed-off-by: Mark Fasheh <mark.fasheh@oracle.com>
This commit is contained in:
parent
40caf5ea5a
commit
586d232b19
@ -1853,6 +1853,9 @@ const struct file_operations ocfs2_fops = {
|
|||||||
.aio_read = ocfs2_file_aio_read,
|
.aio_read = ocfs2_file_aio_read,
|
||||||
.aio_write = ocfs2_file_aio_write,
|
.aio_write = ocfs2_file_aio_write,
|
||||||
.ioctl = ocfs2_ioctl,
|
.ioctl = ocfs2_ioctl,
|
||||||
|
#ifdef CONFIG_COMPAT
|
||||||
|
.compat_ioctl = ocfs2_compat_ioctl,
|
||||||
|
#endif
|
||||||
.splice_read = ocfs2_file_splice_read,
|
.splice_read = ocfs2_file_splice_read,
|
||||||
.splice_write = ocfs2_file_splice_write,
|
.splice_write = ocfs2_file_splice_write,
|
||||||
};
|
};
|
||||||
@ -1862,4 +1865,7 @@ const struct file_operations ocfs2_dops = {
|
|||||||
.readdir = ocfs2_readdir,
|
.readdir = ocfs2_readdir,
|
||||||
.fsync = ocfs2_sync_file,
|
.fsync = ocfs2_sync_file,
|
||||||
.ioctl = ocfs2_ioctl,
|
.ioctl = ocfs2_ioctl,
|
||||||
|
#ifdef CONFIG_COMPAT
|
||||||
|
.compat_ioctl = ocfs2_compat_ioctl,
|
||||||
|
#endif
|
||||||
};
|
};
|
||||||
|
@ -134,3 +134,26 @@ int ocfs2_ioctl(struct inode * inode, struct file * filp,
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#ifdef CONFIG_COMPAT
|
||||||
|
long ocfs2_compat_ioctl(struct file *file, unsigned cmd, unsigned long arg)
|
||||||
|
{
|
||||||
|
struct inode *inode = file->f_path.dentry->d_inode;
|
||||||
|
int ret;
|
||||||
|
|
||||||
|
switch (cmd) {
|
||||||
|
case OCFS2_IOC32_GETFLAGS:
|
||||||
|
cmd = OCFS2_IOC_GETFLAGS;
|
||||||
|
break;
|
||||||
|
case OCFS2_IOC32_SETFLAGS:
|
||||||
|
cmd = OCFS2_IOC_SETFLAGS;
|
||||||
|
break;
|
||||||
|
default:
|
||||||
|
return -ENOIOCTLCMD;
|
||||||
|
}
|
||||||
|
|
||||||
|
lock_kernel();
|
||||||
|
ret = ocfs2_ioctl(inode, file, cmd, arg);
|
||||||
|
unlock_kernel();
|
||||||
|
return ret;
|
||||||
|
}
|
||||||
|
#endif
|
||||||
|
@ -12,5 +12,6 @@
|
|||||||
|
|
||||||
int ocfs2_ioctl(struct inode * inode, struct file * filp,
|
int ocfs2_ioctl(struct inode * inode, struct file * filp,
|
||||||
unsigned int cmd, unsigned long arg);
|
unsigned int cmd, unsigned long arg);
|
||||||
|
long ocfs2_compat_ioctl(struct file *file, unsigned cmd, unsigned long arg);
|
||||||
|
|
||||||
#endif /* OCFS2_IOCTL_H */
|
#endif /* OCFS2_IOCTL_H */
|
||||||
|
@ -166,6 +166,8 @@
|
|||||||
*/
|
*/
|
||||||
#define OCFS2_IOC_GETFLAGS _IOR('f', 1, long)
|
#define OCFS2_IOC_GETFLAGS _IOR('f', 1, long)
|
||||||
#define OCFS2_IOC_SETFLAGS _IOW('f', 2, long)
|
#define OCFS2_IOC_SETFLAGS _IOW('f', 2, long)
|
||||||
|
#define OCFS2_IOC32_GETFLAGS _IOR('f', 1, int)
|
||||||
|
#define OCFS2_IOC32_SETFLAGS _IOW('f', 2, int)
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Journal Flags (ocfs2_dinode.id1.journal1.i_flags)
|
* Journal Flags (ocfs2_dinode.id1.journal1.i_flags)
|
||||||
|
Loading…
Reference in New Issue
Block a user