File 0024-linux-user-add-more-blk-ioctls.patch of Package qemu.19799

From: Alexander Graf <agraf@suse.de>
Date: Wed, 10 Oct 2012 10:21:20 +0200
Subject: linux-user: add more blk ioctls

Implement a few more ioctls that operate on block devices.

Signed-off-by: Alexander Graf <agraf@suse.de>
---
 linux-user/ioctls.h        | 18 ++++++++++++++++++
 linux-user/syscall_defs.h  |  6 ++++++
 linux-user/syscall_types.h |  3 +++
 3 files changed, 27 insertions(+)

diff --git a/linux-user/ioctls.h b/linux-user/ioctls.h
index f9f7c837878b71e5bf04a7a12e7c..8eb44468a9938d3b033fd2e1952a 100644
--- a/linux-user/ioctls.h
+++ b/linux-user/ioctls.h
@@ -72,6 +72,24 @@
      IOCTL(BLKGETSIZE, IOC_R, MK_PTR(TYPE_ULONG))
 #ifdef BLKGETSIZE64
      IOCTL(BLKGETSIZE64, IOC_R, MK_PTR(TYPE_ULONGLONG))
+#endif
+#ifdef BLKDISCARD
+     IOCTL(BLKDISCARD, IOC_W, MK_PTR(MK_STRUCT(STRUCT_blkdiscard)))
+#endif
+#ifdef BLKIOMIN
+     IOCTL(BLKIOMIN, IOC_R, MK_PTR(TYPE_INT))
+#endif
+#ifdef BLKIOOPT
+     IOCTL(BLKIOOPT, IOC_R, MK_PTR(TYPE_INT))
+#endif
+#ifdef BLKALIGNOFF
+     IOCTL(BLKALIGNOFF, IOC_R, MK_PTR(TYPE_INT))
+#endif
+#ifdef BLKPBSZGET
+     IOCTL(BLKPBSZGET, IOC_R, MK_PTR(TYPE_INT))
+#endif
+#ifdef BLKDISCARDZEROES
+     IOCTL(BLKDISCARDZEROES, IOC_R, MK_PTR(TYPE_INT))
 #endif
      IOCTL(BLKFLSBUF, 0, TYPE_NULL)
      IOCTL(BLKRASET, 0, TYPE_INT)
diff --git a/linux-user/syscall_defs.h b/linux-user/syscall_defs.h
index 77be1817fccc6d30b912f6099bc4..787ba857b766638eb7430e163403 100644
--- a/linux-user/syscall_defs.h
+++ b/linux-user/syscall_defs.h
@@ -956,6 +956,12 @@ struct target_pollfd {
 #define TARGET_BLKGETSIZE64 TARGET_IOR(0x12,114,abi_ulong)
                                              /* return device size in bytes
                                                 (u64 *arg) */
+#define TARGET_BLKDISCARD TARGET_IO(0x12,119)
+#define TARGET_BLKIOMIN TARGET_IO(0x12,120)
+#define TARGET_BLKIOOPT TARGET_IO(0x12,121)
+#define TARGET_BLKALIGNOFF TARGET_IO(0x12,122)
+#define TARGET_BLKPBSZGET TARGET_IO(0x12,123)
+#define TARGET_BLKDISCARDZEROES TARGET_IO(0x12,124)
 #define TARGET_FIBMAP     TARGET_IO(0x00,1)  /* bmap access */
 #define TARGET_FIGETBSZ   TARGET_IO(0x00,2)  /* get the block size used for bmap */
 #define TARGET_FS_IOC_FIEMAP TARGET_IOWR('f',11,struct fiemap)
diff --git a/linux-user/syscall_types.h b/linux-user/syscall_types.h
index e5331b44954362037962803c6e23..a730c87baf382854bb26519bc553 100644
--- a/linux-user/syscall_types.h
+++ b/linux-user/syscall_types.h
@@ -71,6 +71,9 @@ STRUCT(kbentry,
 STRUCT(kbsentry,
        TYPE_CHAR, MK_ARRAY(TYPE_CHAR, 512))
 
+STRUCT(blkdiscard,
+       MK_ARRAY(TYPE_LONGLONG, 2))
+
 STRUCT(audio_buf_info,
        TYPE_INT, TYPE_INT, TYPE_INT, TYPE_INT)
 
openSUSE Build Service is sponsored by