Message ID | 20221004093206.652431-2-berrange@redhat.com |
---|---|
State | New |
Headers | show |
Series | linux-user: fix regression with some ioctls with newest glibc | expand |
Le 04/10/2022 à 11:32, Daniel P. Berrangé a écrit : > GLibc changes prevent us from including linux/fs.h anymore, > and we previously adjusted to this in > > commit 3cd3df2a9584e6f753bb62a0028bd67124ab5532 > Author: Daniel P. Berrangé <berrange@redhat.com> > Date: Tue Aug 2 12:41:34 2022 -0400 > > linux-user: fix compat with glibc >= 2.36 sys/mount.h > > That change required adding compat ioctl definitions on the > QEMU side for any ioctls that we would otherwise obtain > from linux/fs.h. This commit adds more that were initially > missed, due to their usage being conditionalized in QEMU. > > Signed-off-by: Daniel P. Berrangé <berrange@redhat.com> > --- > linux-user/syscall.c | 25 +++++++++++++++++++++++++ > 1 file changed, 25 insertions(+) > > diff --git a/linux-user/syscall.c b/linux-user/syscall.c > index 2e954d8dbd..f6a15df69d 100644 > --- a/linux-user/syscall.c > +++ b/linux-user/syscall.c > @@ -111,6 +111,31 @@ > #define FS_IOC32_SETFLAGS _IOW('f', 2, int) > #define FS_IOC32_GETVERSION _IOR('v', 1, int) > #define FS_IOC32_SETVERSION _IOW('v', 2, int) > + > +#define BLKGETSIZE64 _IOR(0x12,114,size_t) > +#define BLKDISCARD _IO(0x12,119) > +#define BLKIOMIN _IO(0x12,120) > +#define BLKIOOPT _IO(0x12,121) > +#define BLKALIGNOFF _IO(0x12,122) > +#define BLKPBSZGET _IO(0x12,123) > +#define BLKDISCARDZEROES _IO(0x12,124) > +#define BLKSECDISCARD _IO(0x12,125) > +#define BLKROTATIONAL _IO(0x12,126) > +#define BLKZEROOUT _IO(0x12,127) > + > +#define FIBMAP _IO(0x00,1) > +#define FIGETBSZ _IO(0x00,2) > + > +struct file_clone_range { > + __s64 src_fd; > + __u64 src_offset; > + __u64 src_length; > + __u64 dest_offset; > +}; > + > +#define FICLONE _IOW(0x94, 9, int) > +#define FICLONERANGE _IOW(0x94, 13, struct file_clone_range) > + > #else > #include <linux/fs.h> > #endif Reviewed-by: Laurent Vivier <laurent@vivier.eu>
Le 04/10/2022 à 11:32, Daniel P. Berrangé a écrit : > GLibc changes prevent us from including linux/fs.h anymore, > and we previously adjusted to this in > > commit 3cd3df2a9584e6f753bb62a0028bd67124ab5532 > Author: Daniel P. Berrangé <berrange@redhat.com> > Date: Tue Aug 2 12:41:34 2022 -0400 > > linux-user: fix compat with glibc >= 2.36 sys/mount.h > > That change required adding compat ioctl definitions on the > QEMU side for any ioctls that we would otherwise obtain > from linux/fs.h. This commit adds more that were initially > missed, due to their usage being conditionalized in QEMU. > > Signed-off-by: Daniel P. Berrangé <berrange@redhat.com> > --- > linux-user/syscall.c | 25 +++++++++++++++++++++++++ > 1 file changed, 25 insertions(+) > > diff --git a/linux-user/syscall.c b/linux-user/syscall.c > index 2e954d8dbd..f6a15df69d 100644 > --- a/linux-user/syscall.c > +++ b/linux-user/syscall.c > @@ -111,6 +111,31 @@ > #define FS_IOC32_SETFLAGS _IOW('f', 2, int) > #define FS_IOC32_GETVERSION _IOR('v', 1, int) > #define FS_IOC32_SETVERSION _IOW('v', 2, int) > + > +#define BLKGETSIZE64 _IOR(0x12,114,size_t) > +#define BLKDISCARD _IO(0x12,119) > +#define BLKIOMIN _IO(0x12,120) > +#define BLKIOOPT _IO(0x12,121) > +#define BLKALIGNOFF _IO(0x12,122) > +#define BLKPBSZGET _IO(0x12,123) > +#define BLKDISCARDZEROES _IO(0x12,124) > +#define BLKSECDISCARD _IO(0x12,125) > +#define BLKROTATIONAL _IO(0x12,126) > +#define BLKZEROOUT _IO(0x12,127) > + > +#define FIBMAP _IO(0x00,1) > +#define FIGETBSZ _IO(0x00,2) > + > +struct file_clone_range { > + __s64 src_fd; > + __u64 src_offset; > + __u64 src_length; > + __u64 dest_offset; > +}; > + > +#define FICLONE _IOW(0x94, 9, int) > +#define FICLONERANGE _IOW(0x94, 13, struct file_clone_range) > + > #else > #include <linux/fs.h> > #endif Applied to my linux-user-for-7.2 branch. Thanks, Laurent
diff --git a/linux-user/syscall.c b/linux-user/syscall.c index 2e954d8dbd..f6a15df69d 100644 --- a/linux-user/syscall.c +++ b/linux-user/syscall.c @@ -111,6 +111,31 @@ #define FS_IOC32_SETFLAGS _IOW('f', 2, int) #define FS_IOC32_GETVERSION _IOR('v', 1, int) #define FS_IOC32_SETVERSION _IOW('v', 2, int) + +#define BLKGETSIZE64 _IOR(0x12,114,size_t) +#define BLKDISCARD _IO(0x12,119) +#define BLKIOMIN _IO(0x12,120) +#define BLKIOOPT _IO(0x12,121) +#define BLKALIGNOFF _IO(0x12,122) +#define BLKPBSZGET _IO(0x12,123) +#define BLKDISCARDZEROES _IO(0x12,124) +#define BLKSECDISCARD _IO(0x12,125) +#define BLKROTATIONAL _IO(0x12,126) +#define BLKZEROOUT _IO(0x12,127) + +#define FIBMAP _IO(0x00,1) +#define FIGETBSZ _IO(0x00,2) + +struct file_clone_range { + __s64 src_fd; + __u64 src_offset; + __u64 src_length; + __u64 dest_offset; +}; + +#define FICLONE _IOW(0x94, 9, int) +#define FICLONERANGE _IOW(0x94, 13, struct file_clone_range) + #else #include <linux/fs.h> #endif
GLibc changes prevent us from including linux/fs.h anymore, and we previously adjusted to this in commit 3cd3df2a9584e6f753bb62a0028bd67124ab5532 Author: Daniel P. Berrangé <berrange@redhat.com> Date: Tue Aug 2 12:41:34 2022 -0400 linux-user: fix compat with glibc >= 2.36 sys/mount.h That change required adding compat ioctl definitions on the QEMU side for any ioctls that we would otherwise obtain from linux/fs.h. This commit adds more that were initially missed, due to their usage being conditionalized in QEMU. Signed-off-by: Daniel P. Berrangé <berrange@redhat.com> --- linux-user/syscall.c | 25 +++++++++++++++++++++++++ 1 file changed, 25 insertions(+)