qemu with hax to log dma reads & writes jcs.org/2018/11/12/vfio

linux-user: Add FICLONE and FICLONERANGE ioctls

Add missing FICLONE and FICLONERANGE ioctls.

Signed-off-by: Helge Deller <deller@gmx.de>
Reviewed-by: Laurent Vivier <laurent@vivier.eu>
Message-Id: <20170211222602.GA6399@ls3530.fritz.box>
Signed-off-by: Laurent Vivier <laurent@vivier.eu>

authored by

Helge Deller and committed by
Laurent Vivier
21992cb6 1e06262d

+15
+5
linux-user/ioctls.h
··· 112 112 #ifdef FIBMAP 113 113 IOCTL(FIBMAP, IOC_W | IOC_R, MK_PTR(TYPE_LONG)) 114 114 #endif 115 + #ifdef FICLONE 116 + IOCTL(FICLONE, IOC_W, TYPE_INT) 117 + IOCTL(FICLONERANGE, IOC_W, MK_PTR(MK_STRUCT(STRUCT_file_clone_range))) 118 + #endif 119 + 115 120 #ifdef FIGETBSZ 116 121 IOCTL(FIGETBSZ, IOC_R, MK_PTR(TYPE_LONG)) 117 122 #endif
+4
linux-user/syscall_defs.h
··· 1086 1086 1087 1087 #define TARGET_FIBMAP TARGET_IO(0x00,1) /* bmap access */ 1088 1088 #define TARGET_FIGETBSZ TARGET_IO(0x00,2) /* get the block size used for bmap */ 1089 + 1090 + #define TARGET_FICLONE TARGET_IOW(0x94, 9, int) 1091 + #define TARGET_FICLONERANGE TARGET_IOW(0x94, 13, struct file_clone_range) 1092 + 1089 1093 /* Note that the ioctl numbers claim type "long" but the actual type 1090 1094 * used by the kernel is "int". 1091 1095 */
+6
linux-user/syscall_types.h
··· 232 232 STRUCT(dm_target_msg, 233 233 TYPE_ULONGLONG) /* sector */ 234 234 235 + STRUCT(file_clone_range, 236 + TYPE_LONGLONG, /* src_fd */ 237 + TYPE_ULONGLONG, /* src_offset */ 238 + TYPE_ULONGLONG, /* src_length */ 239 + TYPE_ULONGLONG) /* dest_offset */ 240 + 235 241 STRUCT(fiemap_extent, 236 242 TYPE_ULONGLONG, /* fe_logical */ 237 243 TYPE_ULONGLONG, /* fe_physical */