[pve-devel] [PATCH] update proxmox patches to qemu 2.4
Alexandre Derumier
aderumier at odiso.com
Tue Jun 30 18:17:35 CEST 2015
fixme :
-internal-snapshot-async.patch
- backups : seem that they are lot of changes with bitmap support add (backup_start have new arguments for example)
blockdev.c:2486:7: error: conflicting types for ‘qmp_backup’
char *qmp_backup(const char *backup_file, bool has_format,
^
In file included from blockdev.c:49:0:
qmp-commands.h:111:11: note: previous declaration of ‘qmp_backup’ was here
UuidInfo *qmp_backup(const char *backup_file, bool has_format, BackupFormat format, bool has_config_file, const char *config_file, bool has_devlist, const char *devlist, bool has_speed, int64_t speed, Error **errp);
^
blockdev.c: In function ‘qmp_backup’:
blockdev.c:2520:37: error: ‘QERR_DEVICE_IS_READ_ONLY’ undeclared (first use in this function)
error_set(errp, QERR_DEVICE_IS_READ_ONLY, *d);
^
blockdev.c:2520:37: note: each undeclared identifier is reported only once for each function it appears in
blockdev.c:2524:21: error: incompatible type for argument 2 of ‘error_set’
error_set(errp, QERR_DEVICE_HAS_NO_MEDIUM, *d);
^
In file included from /var/lib/vz/proxmox2/pve-qemu-kvm2.4/qemu-kvm/include/sysemu/block-backend.h:17:0,
from blockdev.c:33:
/var/lib/vz/proxmox2/pve-qemu-kvm2.4/qemu-kvm/include/qapi/error.h:30:6: note: expected ‘ErrorClass’ but argument is of type ‘const char *’
void error_set(Error **errp, ErrorClass err_class, const char *fmt, ...)
^
blockdev.c:2531:33: error: ‘QERR_DEVICE_NOT_FOUND’ undeclared (first use in this function)
error_set(errp, QERR_DEVICE_NOT_FOUND, *d);
^
blockdev.c:2707:9: error: incompatible type for argument 7 of ‘backup_start’
backup_start(di->bs, di->target, speed, MIRROR_SYNC_MODE_FULL,
^
In file included from /var/lib/vz/proxmox2/pve-qemu-kvm2.4/qemu-kvm/include/block/throttle-groups.h:29:0,
from blockdev.c:37:
/var/lib/vz/proxmox2/pve-qemu-kvm2.4/qemu-kvm/include/block/block_int.h:650:6: note: expected ‘BlockdevOnError’ but argument is of type ‘int (*)(void *, struct BlockDriverState *, int64_t, int, unsigned char *)’
void backup_start(BlockDriverState *bs, BlockDriverState *target,
^
blockdev.c:2709:41: warning: passing argument 8 of ‘backup_start’ from incompatible pointer type
pvebackup_dump_cb, pvebackup_complete_cb, di,
^
In file included from /var/lib/vz/proxmox2/pve-qemu-kvm2.4/qemu-kvm/include/block/throttle-groups.h:29:0,
from blockdev.c:37:
/var/lib/vz/proxmox2/pve-qemu-kvm2.4/qemu-kvm/include/block/block_int.h:650:6: note: expected ‘int (*)(void *, struct BlockDriverState *, int64_t, int, unsigned char *)’ but argument is of type ‘void (*)(void *, int)’
void backup_start(BlockDriverState *bs, BlockDriverState *target,
^
blockdev.c:2709:64: warning: passing argument 9 of ‘backup_start’ from incompatible pointer type
pvebackup_dump_cb, pvebackup_complete_cb, di,
^
In file included from /var/lib/vz/proxmox2/pve-qemu-kvm2.4/qemu-kvm/include/block/throttle-groups.h:29:0,
from blockdev.c:37:
/var/lib/vz/proxmox2/pve-qemu-kvm2.4/qemu-kvm/include/block/block_int.h:650:6: note: expected ‘void (*)(void *, int)’ but argument is of type ‘struct PVEBackupDevInfo *’
void backup_start(BlockDriverState *bs, BlockDriverState *target,
^
blockdev.c:2710:22: warning: passing argument 10 of ‘backup_start’ makes pointer from integer without a cast
true, &local_err);
^
In file included from /var/lib/vz/proxmox2/pve-qemu-kvm2.4/qemu-kvm/include/block/throttle-groups.h:29:0,
from blockdev.c:37:
/var/lib/vz/proxmox2/pve-qemu-kvm2.4/qemu-kvm/include/block/block_int.h:650:6: note: expected ‘void *’ but argument is of type ‘int’
void backup_start(BlockDriverState *bs, BlockDriverState *target,
^
blockdev.c:2710:22: warning: the address of ‘local_err’ will always evaluate as ‘true’ [-Waddress]
true, &local_err);
^
blockdev.c:2707:9: error: too few arguments to function ‘backup_start’
backup_start(di->bs, di->target, speed, MIRROR_SYNC_MODE_FULL,
^
In file included from /var/lib/vz/proxmox2/pve-qemu-kvm2.4/qemu-kvm/include/block/throttle-groups.h:29:0,
from blockdev.c:37:
/var/lib/vz/proxmox2/pve-qemu-kvm2.4/qemu-kvm/include/block/block_int.h:650:6: note: declared here
void backup_start(BlockDriverState *bs, BlockDriverState *target,
^
/var/lib/vz/proxmox2/pve-qemu-kvm2.4/qemu-kvm/rules.mak:57: recipe for target 'blockdev.o' failed
Signed-off-by: Alexandre Derumier <aderumier at odiso.com>
---
debian/patches/add-qmp-get-link-status.patch | 15 ++-
.../patches/backup-add-pve-monitor-commands.patch | 4 +-
debian/patches/backup-modify-job-api.patch | 24 +++--
debian/patches/internal-snapshot-async.patch | 2 +-
debian/patches/jemalloc.patch | 112 ++++++++++++++++++---
debian/patches/modify-query-machines.patch | 2 +-
debian/patches/modify-query-spice.patch | 2 +-
debian/patches/series | 2 -
debian/patches/virtio-balloon-fix-query.patch | 4 +-
9 files changed, 129 insertions(+), 38 deletions(-)
diff --git a/debian/patches/add-qmp-get-link-status.patch b/debian/patches/add-qmp-get-link-status.patch
index 105d415..850188a 100644
--- a/debian/patches/add-qmp-get-link-status.patch
+++ b/debian/patches/add-qmp-get-link-status.patch
@@ -2,11 +2,20 @@ Index: new/qapi-schema.json
===================================================================
--- new.orig/qapi-schema.json 2014-12-10 09:15:50.890262765 +0100
+++ new/qapi-schema.json 2014-12-11 09:20:31.072561486 +0100
-@@ -1366,6 +1366,22 @@
+@@ -1366,6 +1366,31 @@
##
{ 'command': 'set_link', 'data': {'name': 'str', 'up': 'bool'} }
-+
++##
++# @LinkStatus:
++#
++# Nic LinkStatus information.
++#
++# @status: the status of the nic
++#
++##
++{ 'struct': 'LinkStatus', 'data': {'status': 'int'} }
++
+##
+# @get_link_status
+#
@@ -20,7 +29,7 @@ Index: new/qapi-schema.json
+#
+# Notes: this is an Proxmox VE extension and not offical part of Qemu.
+##
-+{ 'command': 'get_link_status', 'data': {'name': 'str'}, 'returns': 'int'}
++{ 'command': 'get_link_status', 'data': {'name': 'str'}, 'returns': 'LinkStatus' }
+
##
# @balloon:
diff --git a/debian/patches/backup-add-pve-monitor-commands.patch b/debian/patches/backup-add-pve-monitor-commands.patch
index e58033e..26b2548 100644
--- a/debian/patches/backup-add-pve-monitor-commands.patch
+++ b/debian/patches/backup-add-pve-monitor-commands.patch
@@ -650,7 +650,7 @@ Index: new/qapi-schema.json
+# @uuid: #optional uuid for this backup job
+#
+##
-+{ 'type': 'BackupStatus',
++{ 'struct': 'BackupStatus',
+ 'data': {'*status': 'str', '*errmsg': 'str', '*total': 'int',
+ '*transferred': 'int', '*zero-bytes': 'int',
+ '*start-time': 'int', '*end-time': 'int',
@@ -690,7 +690,7 @@ Index: new/qapi-schema.json
+ '*format': 'BackupFormat',
+ '*config-file': 'str',
+ '*devlist': 'str', '*speed': 'int' },
-+ 'returns': 'str' }
++ 'returns': 'UuidInfo' }
+
+##
+# @query-backup
diff --git a/debian/patches/backup-modify-job-api.patch b/debian/patches/backup-modify-job-api.patch
index f5e81a7..4f1649f 100644
--- a/debian/patches/backup-modify-job-api.patch
+++ b/debian/patches/backup-modify-job-api.patch
@@ -125,8 +125,8 @@ Index: new/block/backup.c
return;
}
-@@ -397,12 +415,15 @@ in backup_start
- return;
+@@ -529,12 +529,15 @@ void backup_start(BlockDriverState *bs, BlockDriverState *target,
+ goto error;
}
- bdrv_op_block_all(target, job->common.blocker);
@@ -139,28 +139,29 @@ Index: new/block/backup.c
job->target = target;
job->sync_mode = sync_mode;
+ job->common.paused = paused;
+ job->sync_bitmap = sync_mode == MIRROR_SYNC_MODE_DIRTY_BITMAP ?
+ sync_bitmap : NULL;
job->common.len = len;
- job->common.co = qemu_coroutine_create(backup_run);
- qemu_coroutine_enter(job->common.co, job);
+
Index: new/blockdev.c
===================================================================
--- new.orig/blockdev.c 2014-11-20 07:55:31.000000000 +0100
+++ new/blockdev.c 2014-11-20 08:48:02.000000000 +0100
-@@ -2223,7 +2223,7 @@ qmp_drive_backup
- bdrv_set_aio_context(target_bs, aio_context);
+@@ -2575,7 +2575,7 @@ void qmp_drive_backup(const char *device, const char *target,
- backup_start(bs, target_bs, speed, sync, on_source_error, on_target_error,
+ backup_start(bs, target_bs, speed, sync, bmap,
+ on_source_error, on_target_error,
- block_job_cb, bs, &local_err);
+ NULL, block_job_cb, bs, false, &local_err);
if (local_err != NULL) {
bdrv_unref(target_bs);
error_propagate(errp, local_err);
-@@ -2284,7 +2284,7 @@ qmp_blockdev_backup
+@@ -2636,7 +2636,7 @@ void qmp_blockdev_backup(const char *device, const char *target,
bdrv_ref(target_bs);
bdrv_set_aio_context(target_bs, aio_context);
- backup_start(bs, target_bs, speed, sync, on_source_error, on_target_error,
-- block_job_cb, bs, &local_err);
-+ NULL, block_job_cb, bs, false, &local_err);
+ backup_start(bs, target_bs, speed, sync, NULL, on_source_error,
+- on_target_error, block_job_cb, bs, &local_err);
++ on_target_error, NULL, block_job_cb, bs, false, &local_err);
if (local_err != NULL) {
bdrv_unref(target_bs);
error_propagate(errp, local_err);
@@ -180,6 +181,7 @@ Index: new/include/block/block_int.h
int64_t offset;
@@ -583,7 +586,9 @@
int64_t speed, MirrorSyncMode sync_mode,
+ BdrvDirtyBitmap *sync_bitmap,
BlockdevOnError on_source_error,
BlockdevOnError on_target_error,
+ BackupDumpFunc *dump_cb,
diff --git a/debian/patches/internal-snapshot-async.patch b/debian/patches/internal-snapshot-async.patch
index e6d8a13..280830d 100644
--- a/debian/patches/internal-snapshot-async.patch
+++ b/debian/patches/internal-snapshot-async.patch
@@ -267,7 +267,7 @@ Index: new/qapi-schema.json
+#
+# Since: 1.3
+##
-+{ 'type': 'SaveVMInfo',
++{ 'struct': 'SaveVMInfo',
+ 'data': {'*status': 'str', '*error': 'str',
+ '*total-time': 'int', '*bytes': 'int'} }
+
diff --git a/debian/patches/jemalloc.patch b/debian/patches/jemalloc.patch
index b5dba0d..449cb61 100644
--- a/debian/patches/jemalloc.patch
+++ b/debian/patches/jemalloc.patch
@@ -1,16 +1,95 @@
+From patchwork Fri Jun 19 10:56:58 2015
+Content-Type: text/plain; charset="utf-8"
+MIME-Version: 1.0
+Content-Transfer-Encoding: 7bit
+Subject: configure: Add support for jemalloc
+From: Alexandre DERUMIER <aderumier at odiso.com>
+X-Patchwork-Id: 486671
+Message-Id: <1434711418-20429-1-git-send-email-aderumier at odiso.com>
+To: qemu-devel at nongnu.org
+Cc: Alexandre Derumier <aderumier at odiso.com>
+Date: Fri, 19 Jun 2015 12:56:58 +0200
+
+This adds "--enable-jemalloc" and "--disable-jemalloc" to allow linking
+to jemalloc memory allocator.
+
+We have already tcmalloc support,
+but it seem to not working well with a lot of iothreads/disks.
+
+The main problem is that tcmalloc use a shared thread cache of 16MB
+by default.
+With more threads, this cache is shared, and some bad garbage collections
+can occur if the cache is too low.
+
+It's possible to tcmalloc cache increase it with a env var:
+TCMALLOC_MAX_TOTAL_THREAD_CACHE_BYTES=256MB
+
+With default 16MB, performances are really bad with more than 2 disks.
+Increasing to 256MB, it's helping but still have problem with 16 disks/iothreads.
+
+Jemalloc don't have performance problem with default configuration.
+
+Here the benchmark results in iops of 1 qemu vm randread 4K iodepth=32,
+with rbd block backend (librbd is doing a lot of memory allocation),
+1 iothread by disk
+
+glibc malloc
+------------
+
+1 disk 29052
+2 disks 55878
+4 disks 127899
+8 disks 240566
+15 disks 269976
+
+jemalloc
+--------
+
+1 disk 41278
+2 disks 75781
+4 disks 195351
+8 disks 294241
+15 disks 298199
+
+tcmalloc 2.2.1 default 16M cache
+--------------------------------
+
+1 disk 37911
+2 disks 67698
+4 disks 41076
+8 disks 43312
+15 disks 37569
+
+tcmalloc : 256M cache
+---------------------------
+
+1 disk 33914
+2 disks 58839
+4 disks 148205
+8 disks 213298
+15 disks 218383
+
+Signed-off-by: Alexandre Derumier <aderumier at odiso.com>
+Reviewed-by: Fam Zheng <famz at redhat.com>
+---
+ configure | 29 +++++++++++++++++++++++++++++
+ 1 file changed, 29 insertions(+)
+
+diff --git a/configure b/configure
+index 222694f..2fe1e05 100755
--- a/configure
+++ b/configure
-@@ -336,6 +336,7 @@ libssh2=""
- vhdx=""
+@@ -336,6 +336,7 @@ vhdx=""
quorum=""
numa=""
+ tcmalloc="no"
+jemalloc="no"
# parse CC options first
for opt do
-@@ -1134,6 +1135,10 @@ for opt do
+@@ -1147,6 +1148,10 @@ for opt do
;;
- --enable-numa) numa="yes"
+ --enable-tcmalloc) tcmalloc="yes"
;;
+ --disable-jemalloc) jemalloc="no"
+ ;;
@@ -19,16 +98,19 @@
*)
echo "ERROR: unknown option $opt"
echo "Try '$0 --help' for more information"
-@@ -1407,6 +1412,8 @@ Advanced options (experts only):
- --enable-quorum enable quorum block filter support
- --disable-numa disable libnuma support
- --enable-numa enable libnuma support
-+ --disable-jemalloc disable jemalloc support
-+ --enable-numa enable jemalloc support
+@@ -3344,6 +3351,11 @@ EOF
+ fi
+ fi
+
++if test "$tcmalloc" = "yes" && test "$jemalloc" = "yes" ; then
++ echo "ERROR: tcmalloc && jemalloc can't be used at the same time"
++ exit 1
++fi
++
+ ##########################################
+ # tcmalloc probe
- NOTE: The object files are built at the place where configure is launched
- EOF
-@@ -3325,6 +3332,22 @@ EOF
+@@ -3361,6 +3373,22 @@ EOF
fi
##########################################
@@ -51,10 +133,10 @@
# signalfd probe
signalfd="no"
cat > $TMPC << EOF
-@@ -4435,6 +4458,7 @@ echo "lzo support $lzo"
- echo "snappy support $snappy"
+@@ -4499,6 +4527,7 @@ echo "snappy support $snappy"
echo "bzip2 support $bzip2"
echo "NUMA host support $numa"
+ echo "tcmalloc support $tcmalloc"
+echo "jemalloc support $jemalloc"
if test "$sdl_too_old" = "yes"; then
diff --git a/debian/patches/modify-query-machines.patch b/debian/patches/modify-query-machines.patch
index d028e3e..5edcdd2 100644
--- a/debian/patches/modify-query-machines.patch
+++ b/debian/patches/modify-query-machines.patch
@@ -13,7 +13,7 @@ Index: new/qapi-schema.json
#
@@ -2400,7 +2402,7 @@
##
- { 'type': 'MachineInfo',
+ { 'struct': 'MachineInfo',
'data': { 'name': 'str', '*alias': 'str',
- '*is-default': 'bool', 'cpu-max': 'int' } }
+ '*is-default': 'bool', '*is-current': 'bool', 'cpu-max': 'int' } }
diff --git a/debian/patches/modify-query-spice.patch b/debian/patches/modify-query-spice.patch
index c485b03..4e5222d 100644
--- a/debian/patches/modify-query-spice.patch
+++ b/debian/patches/modify-query-spice.patch
@@ -35,7 +35,7 @@ Index: new/qapi-schema.json
+#
# Since: 0.14.0
##
- { 'type': 'SpiceInfo',
+ { 'struct': 'SpiceInfo',
'data': {'enabled': 'bool', 'migrated': 'bool', '*host': 'str', '*port': 'int',
'*tls-port': 'int', '*auth': 'str', '*compiled-version': 'str',
+ '*ticket': 'str',
diff --git a/debian/patches/series b/debian/patches/series
index 1105537..664e3f1 100644
--- a/debian/patches/series
+++ b/debian/patches/series
@@ -30,6 +30,4 @@ backup-vma-extract-add-block-driver-type.patch
glusterfs-daemonize.patch
gluster-backupserver.patch
add-qmp-get-link-status.patch
-0001-friendlier-ai_flag-hints-for-ipv6-hosts.patch
-0001-vvfat-add-a-label-option.patch
jemalloc.patch
diff --git a/debian/patches/virtio-balloon-fix-query.patch b/debian/patches/virtio-balloon-fix-query.patch
index 236a624..741e44f 100644
--- a/debian/patches/virtio-balloon-fix-query.patch
+++ b/debian/patches/virtio-balloon-fix-query.patch
@@ -116,8 +116,8 @@ Index: new/qapi-schema.json
+#
+# Since: 0.14.0
##
--{ 'type': 'BalloonInfo', 'data': {'actual': 'int' } }
-+{ 'type': 'BalloonInfo',
+-{ 'struct': 'BalloonInfo', 'data': {'actual': 'int' } }
++{ 'struct': 'BalloonInfo',
+ 'data': {'actual': 'int', '*last_update': 'int', '*mem_swapped_in': 'int',
+ '*mem_swapped_out': 'int', '*major_page_faults': 'int',
+ '*minor_page_faults': 'int', '*free_mem': 'int',
--
2.1.4
More information about the pve-devel
mailing list