Message ID | 1578947683-21011-13-git-send-email-aleksandar.markovic@rt-rk.com (mailing list archive) |
---|---|
State | New, archived |
Headers | show |
Series | linux-user: Misc patches for 5.0 | expand |
Le 13/01/2020 à 21:34, Aleksandar Markovic a écrit : > From: Aleksandar Markovic <amarkovic@wavecomp.com> > > Both FS_IOC_FSGETXATTR and FS_IOC_FSSETXATTR accept a pointer to > the structure > > struct file_clone_range { > __s64 src_fd; > __u64 src_offset; > __u64 src_length; > __u64 dest_offset; > }; > > as their third argument. There is a mismatch somewhere: they take 'struct fsxattr'. 'struct file_clone_range' is used by FICLONERANGE. > > These ioctls were relatively recently introduced, so the "#ifdef" > guards are used in this implementation. > > Signed-off-by: Aleksandar Markovic <amarkovic@wavecomp.com> > --- > linux-user/ioctls.h | 7 +++++++ > linux-user/syscall_defs.h | 2 ++ > 2 files changed, 9 insertions(+) > > diff --git a/linux-user/ioctls.h b/linux-user/ioctls.h > index 3affd88..e1b89a7 100644 > --- a/linux-user/ioctls.h > +++ b/linux-user/ioctls.h > @@ -144,6 +144,13 @@ > IOCTL(FS_IOC32_SETFLAGS, IOC_W, MK_PTR(TYPE_INT)) > IOCTL(FS_IOC32_GETVERSION, IOC_R, MK_PTR(TYPE_INT)) > IOCTL(FS_IOC32_SETVERSION, IOC_W, MK_PTR(TYPE_INT)) > +#ifdef FS_IOC_FSGETXATTR > + IOCTL(FS_IOC_FSGETXATTR, IOC_W, MK_PTR(MK_STRUCT(STRUCT_fsxattr))) > +#endif > +#ifdef FS_IOC_FSSETXATTR > + IOCTL(FS_IOC_FSSETXATTR, IOC_W, MK_PTR(MK_STRUCT(STRUCT_fsxattr))) > +#endif > + > > #ifdef CONFIG_USBFS > /* USB ioctls */ > diff --git a/linux-user/syscall_defs.h b/linux-user/syscall_defs.h > index a73cc3d..12cd3de 100644 > --- a/linux-user/syscall_defs.h > +++ b/linux-user/syscall_defs.h > @@ -924,6 +924,8 @@ struct target_pollfd { > #define TARGET_FS_IOC32_SETFLAGS TARGET_IOW('f', 2, int) > #define TARGET_FS_IOC32_GETVERSION TARGET_IOR('v', 1, int) > #define TARGET_FS_IOC32_SETVERSION TARGET_IOW('v', 2, int) > +#define TARGET_FS_IOC_FSGETXATTR TARGET_IOR('X', 31, struct file_clone_range) > +#define TARGET_FS_IOC_FSSETXATTR TARGET_IOR('X', 32, struct file_clone_range) Do you need also a "#if" around this? Because I think the structure is only defined if the IOCTL is defined. > > /* usb ioctls */ > #define TARGET_USBDEVFS_CONTROL TARGET_IOWRU('U', 0) > Thanks, Laurent
diff --git a/linux-user/ioctls.h b/linux-user/ioctls.h index 3affd88..e1b89a7 100644 --- a/linux-user/ioctls.h +++ b/linux-user/ioctls.h @@ -144,6 +144,13 @@ IOCTL(FS_IOC32_SETFLAGS, IOC_W, MK_PTR(TYPE_INT)) IOCTL(FS_IOC32_GETVERSION, IOC_R, MK_PTR(TYPE_INT)) IOCTL(FS_IOC32_SETVERSION, IOC_W, MK_PTR(TYPE_INT)) +#ifdef FS_IOC_FSGETXATTR + IOCTL(FS_IOC_FSGETXATTR, IOC_W, MK_PTR(MK_STRUCT(STRUCT_fsxattr))) +#endif +#ifdef FS_IOC_FSSETXATTR + IOCTL(FS_IOC_FSSETXATTR, IOC_W, MK_PTR(MK_STRUCT(STRUCT_fsxattr))) +#endif + #ifdef CONFIG_USBFS /* USB ioctls */ diff --git a/linux-user/syscall_defs.h b/linux-user/syscall_defs.h index a73cc3d..12cd3de 100644 --- a/linux-user/syscall_defs.h +++ b/linux-user/syscall_defs.h @@ -924,6 +924,8 @@ struct target_pollfd { #define TARGET_FS_IOC32_SETFLAGS TARGET_IOW('f', 2, int) #define TARGET_FS_IOC32_GETVERSION TARGET_IOR('v', 1, int) #define TARGET_FS_IOC32_SETVERSION TARGET_IOW('v', 2, int) +#define TARGET_FS_IOC_FSGETXATTR TARGET_IOR('X', 31, struct file_clone_range) +#define TARGET_FS_IOC_FSSETXATTR TARGET_IOR('X', 32, struct file_clone_range) /* usb ioctls */ #define TARGET_USBDEVFS_CONTROL TARGET_IOWRU('U', 0)