From 10c5410313cb7a9a24e0d447bddc8da3461899e2f4dea61d1a035a8e96fb1994 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Andreas=20F=C3=A4rber?= Date: Sat, 18 Jan 2014 01:33:15 +0000 Subject: [PATCH] Accepting request 214315 from home:a_faerber:branches:Virtualization Attempt to implement BLKPG ioctl 0x1269 to fix KIWI builds OBS-URL: https://build.opensuse.org/request/show/214315 OBS-URL: https://build.opensuse.org/package/show/Virtualization/qemu?expand=0&rev=177 --- ...-linux-user-Implement-BLKPG-ioctl.pa.patch | 73 +++++++++++++++++++ qemu-linux-user.changes | 6 ++ qemu-linux-user.spec | 2 + qemu.spec | 2 + 4 files changed, 83 insertions(+) create mode 100644 0040-linux-user-Implement-BLKPG-ioctl.pa.patch diff --git a/0040-linux-user-Implement-BLKPG-ioctl.pa.patch b/0040-linux-user-Implement-BLKPG-ioctl.pa.patch new file mode 100644 index 00000000..f79e8659 --- /dev/null +++ b/0040-linux-user-Implement-BLKPG-ioctl.pa.patch @@ -0,0 +1,73 @@ +From bcbf3e6efa6b8fd95f2eee2194f40781c952f7b9 Mon Sep 17 00:00:00 2001 +From: =?UTF-8?q?Andreas=20F=C3=A4rber?= +Date: Sat, 18 Jan 2014 02:15:05 +0100 +Subject: [PATCH] linux-user: Implement BLKPG ioctl +MIME-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit + +Signed-off-by: Andreas Färber +--- + linux-user/ioctls.h | 1 + + linux-user/syscall.c | 1 + + linux-user/syscall_defs.h | 1 + + linux-user/syscall_types.h | 13 +++++++++++++ + 4 files changed, 16 insertions(+) + +diff --git a/linux-user/ioctls.h b/linux-user/ioctls.h +index a96a419..ffd6d09 100644 +--- a/linux-user/ioctls.h ++++ b/linux-user/ioctls.h +@@ -95,6 +95,7 @@ + IOCTL(BLKRAGET, IOC_R, MK_PTR(TYPE_LONG)) + IOCTL(BLKSSZGET, IOC_R, MK_PTR(TYPE_LONG)) + IOCTL(BLKBSZGET, IOC_R, MK_PTR(TYPE_INT)) ++ IOCTL(BLKPG, IOC_W, MK_PTR(MK_STRUCT(STRUCT_blkpg_ioctl_arg))) + #ifdef FIBMAP + IOCTL(FIBMAP, IOC_W | IOC_R, MK_PTR(TYPE_LONG)) + #endif +diff --git a/linux-user/syscall.c b/linux-user/syscall.c +index 4f7327a..ef82a0e 100644 +--- a/linux-user/syscall.c ++++ b/linux-user/syscall.c +@@ -107,6 +107,7 @@ int __clone2(int (*fn)(void *), void *child_stack_base, + #include + #include + #include ++#include + #include "linux_loop.h" + #include "cpu-uname.h" + +diff --git a/linux-user/syscall_defs.h b/linux-user/syscall_defs.h +index 2d41202..3cdd471 100644 +--- a/linux-user/syscall_defs.h ++++ b/linux-user/syscall_defs.h +@@ -895,6 +895,7 @@ struct target_pollfd { + #define TARGET_BLKSECTSET TARGET_IO(0x12,102)/* set max sectors per request (ll_rw_blk.c) */ + #define TARGET_BLKSECTGET TARGET_IO(0x12,103)/* get max sectors per request (ll_rw_blk.c) */ + #define TARGET_BLKSSZGET TARGET_IO(0x12,104)/* get block device sector size */ ++#define TARGET_BLKPG TARGET_IO(0x12,105)/* Partition table and disk geometry handling */ + /* A jump here: 108-111 have been used for various private purposes. */ + #define TARGET_BLKBSZGET TARGET_IOR(0x12, 112, abi_ulong) + #define TARGET_BLKBSZSET TARGET_IOW(0x12, 113, abi_ulong) +diff --git a/linux-user/syscall_types.h b/linux-user/syscall_types.h +index dd78619..56e344c 100644 +--- a/linux-user/syscall_types.h ++++ b/linux-user/syscall_types.h +@@ -248,3 +248,16 @@ STRUCT(fiemap, + TYPE_INT, /* fm_mapped_extents */ + TYPE_INT, /* fm_extent_count */ + TYPE_INT) /* fm_reserved */ ++ ++STRUCT(blkpg_partition, ++ TYPE_LONGLONG, /* start */ ++ TYPE_LONGLONG, /* length */ ++ TYPE_INT, /* pno */ ++ MK_ARRAY(TYPE_CHAR, BLKPG_DEVNAMELTH), /* devname */ ++ MK_ARRAY(TYPE_CHAR, BLKPG_VOLNAMELTH)) /* volname */ ++ ++STRUCT(blkpg_ioctl_arg, ++ TYPE_INT, /* op */ ++ TYPE_INT, /* flags */ ++ TYPE_INT, /* datalen */ ++ MK_PTR(MK_STRUCT(STRUCT_blkpg_partition))) /* data */ diff --git a/qemu-linux-user.changes b/qemu-linux-user.changes index 98d790d0..e861f3a5 100644 --- a/qemu-linux-user.changes +++ b/qemu-linux-user.changes @@ -1,3 +1,9 @@ +------------------------------------------------------------------- +Sat Jan 18 01:19:27 UTC 2014 - afaerber@suse.de + +- Added patch to implement BLKPG ioctl that broke kiwi image builds + 0040-linux-user-Implement-BLKPG-ioctl.pa.patch + ------------------------------------------------------------------- Fri Jan 17 17:40:21 UTC 2014 - afaerber@suse.de diff --git a/qemu-linux-user.spec b/qemu-linux-user.spec index b382ce2e..1e4d9479 100644 --- a/qemu-linux-user.spec +++ b/qemu-linux-user.spec @@ -64,6 +64,7 @@ Patch0036: 0036-linux-user-lseek-explicitly-cast-no.patch Patch0037: 0037-virtfs-proxy-helper-Provide-__u64-f.patch Patch0038: 0038-roms-Build-vgabios.bin.patch.patch Patch0039: 0039-configure-Enable-PIE-for-ppc-and-pp.patch +Patch0040: 0040-linux-user-Implement-BLKPG-ioctl.pa.patch # Please do not add patches manually here, run update_git.sh. # this is to make lint happy Source300: rpmlintrc @@ -155,6 +156,7 @@ run cross-architecture builds. %patch0037 -p1 %patch0038 -p1 %patch0039 -p1 +%patch0040 -p1 %build ./configure --prefix=%_prefix --sysconfdir=%_sysconfdir \ diff --git a/qemu.spec b/qemu.spec index 95c251f4..f6f70b8d 100644 --- a/qemu.spec +++ b/qemu.spec @@ -71,6 +71,7 @@ Patch0036: 0036-linux-user-lseek-explicitly-cast-no.patch Patch0037: 0037-virtfs-proxy-helper-Provide-__u64-f.patch Patch0038: 0038-roms-Build-vgabios.bin.patch.patch Patch0039: 0039-configure-Enable-PIE-for-ppc-and-pp.patch +Patch0040: 0040-linux-user-Implement-BLKPG-ioctl.pa.patch # Please do not add patches manually here, run update_git.sh. # roms/ipxe patches @@ -303,6 +304,7 @@ This sub-package contains the guest agent. %patch0037 -p1 %patch0038 -p1 %patch0039 -p1 +%patch0040 -p1 %patch1000 -p1 %patch1001 -p1