]> git.proxmox.com Git - mirror_qemu.git/commitdiff
linux-user: Add FICLONE and FICLONERANGE ioctls
authorHelge Deller <deller@gmx.de>
Sat, 11 Feb 2017 22:26:02 +0000 (23:26 +0100)
committerLaurent Vivier <laurent@vivier.eu>
Thu, 16 Feb 2017 14:29:30 +0000 (15:29 +0100)
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>
linux-user/ioctls.h
linux-user/syscall_defs.h
linux-user/syscall_types.h

index 2f6e85bd7842b9b86e55c87949b758e52a9cecc9..e6997ff230fc61235775fd6cc4ad405a2c4f4bdb 100644 (file)
 #ifdef FIBMAP
      IOCTL(FIBMAP, IOC_W | IOC_R, MK_PTR(TYPE_LONG))
 #endif
+#ifdef FICLONE
+     IOCTL(FICLONE, IOC_W, TYPE_INT)
+     IOCTL(FICLONERANGE, IOC_W, MK_PTR(MK_STRUCT(STRUCT_file_clone_range)))
+#endif
+
 #ifdef FIGETBSZ
      IOCTL(FIGETBSZ, IOC_R, MK_PTR(TYPE_LONG))
 #endif
index 4442c22bc34f025f6a4160d77fc7fcf1f5d3ba8a..72ca5b11d608cee49f61f7f3ce63e7e76178cb26 100644 (file)
@@ -1086,6 +1086,10 @@ struct target_pollfd {
 
 #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_FICLONE    TARGET_IOW(0x94, 9, int)
+#define TARGET_FICLONERANGE TARGET_IOW(0x94, 13, struct file_clone_range)
+
 /* Note that the ioctl numbers claim type "long" but the actual type
  * used by the kernel is "int".
  */
index 2b8c0c6df61eeca5537e537ea66279e25982814e..24631b09be10c507710ccc512c77d4cde87b06c0 100644 (file)
@@ -232,6 +232,12 @@ STRUCT(dm_target_versions,
 STRUCT(dm_target_msg,
        TYPE_ULONGLONG) /* sector */
 
+STRUCT(file_clone_range,
+       TYPE_LONGLONG, /* src_fd */
+       TYPE_ULONGLONG, /* src_offset */
+       TYPE_ULONGLONG, /* src_length */
+       TYPE_ULONGLONG) /* dest_offset */
+
 STRUCT(fiemap_extent,
        TYPE_ULONGLONG, /* fe_logical */
        TYPE_ULONGLONG, /* fe_physical */