]> git.proxmox.com Git - qemu-server.git/log
qemu-server.git
9 years agoQemuServer: fix wrong binding of pci root ports, bridges or switches to vfio
Stefan Priebe [Sun, 1 Feb 2015 19:46:46 +0000 (20:46 +0100)]
QemuServer: fix wrong binding of pci root ports, bridges or switches to vfio

Signed-off-by: Stefan Priebe <s.priebe@profihost.ag>
9 years agoupdate changelog
Dietmar Maurer [Tue, 10 Feb 2015 12:01:54 +0000 (13:01 +0100)]
update changelog

9 years agobug 597: hotplug fix
Wolfgang Link [Tue, 10 Feb 2015 11:59:22 +0000 (12:59 +0100)]
bug 597: hotplug fix

wrap params in dopple quotes, so spaces will accept.

Signed-off-by: Wolfgang Link <w.link@proxmox.com>
9 years agomemory hotplug option is not hotpluggable
Alexandre Derumier [Mon, 9 Feb 2015 15:47:52 +0000 (16:47 +0100)]
memory hotplug option is not hotpluggable

Signed-off-by: Alexandre Derumier <aderumier@odiso.com>
9 years agobump version to 3.3-15
Dietmar Maurer [Mon, 9 Feb 2015 06:05:29 +0000 (07:05 +0100)]
bump version to 3.3-15

9 years agoadd foreach_dimm sub
Alexandre Derumier [Sun, 8 Feb 2015 13:53:07 +0000 (14:53 +0100)]
add foreach_dimm sub

and use it in memory hotplug and config_to_cmd

Signed-off-by: Alexandre Derumier <aderumier@odiso.com>
9 years agobump version to 3.3-14
Dietmar Maurer [Wed, 28 Jan 2015 06:12:11 +0000 (07:12 +0100)]
bump version to 3.3-14

9 years agomemory hotplug patch v10
Alexandre Derumier [Wed, 28 Jan 2015 05:47:24 +0000 (06:47 +0100)]
memory hotplug patch v10

This patch allow to hotplug memory dimm modules
though a new option : dimm_memory

The dimm modules are generated from a map

     dimmid       size  dimm_memory
     dimm0        512        512     100.00 0
     dimm1        512       1024      50.00 1
     dimm2        512       1536      33.33 2
     dimm3        512       2048      25.00 3
     dimm4        512       2560      20.00 0
     dimm5        512       3072      16.67 1
     dimm6        512       3584      14.29 2
     dimm7        512       4096      12.50 3
     dimm8        512       4608      11.11 0
     dimm9        512       5120      10.00 1
    dimm10        512       5632       9.09 2
    dimm11        512       6144       8.33 3
    dimm12        512       6656       7.69 0
    dimm13        512       7168       7.14 1
    dimm14        512       7680       6.67 2
    dimm15        512       8192       6.25 3
    dimm16        512       8704       5.88 0
    dimm17        512       9216       5.56 1
    dimm18        512       9728       5.26 2
    dimm19        512      10240       5.00 3
    dimm20        512      10752       4.76 0
    ...

   dimm241      65536    3260416       2.01 1
   dimm242      65536    3325952       1.97 2
   dimm243      65536    3391488       1.93 3
   dimm244      65536    3457024       1.90 0
   dimm245      65536    3522560       1.86 1
   dimm246      65536    3588096       1.83 2
   dimm247      65536    3653632       1.79 3
   dimm248      65536    3719168       1.76 0
   dimm249      65536    3784704       1.73 1
   dimm250      65536    3850240       1.70 2
   dimm251      65536    3915776       1.67 3
   dimm252      65536    3981312       1.65 0
   dimm253      65536    4046848       1.62 1
   dimm254      65536    4112384       1.59 2
   dimm255      65536    4177920       1.57 3

max dimm_memory size is 4TB, which is the current qemu limit

If the dimm_memory value is not aligned on memory module, we align the dimm_memory on the next module.

vmid.conf
---------
memory: 1024
numa:1
hotplug: memmory

when hotplug memory option is enabled, the minimum memory value must be 1GB, and also numa need to be enabled.

we assign the first 1GB as static memory, splitted on each numa nodes.
The remaining memory is assigned on hotpluggable dimm devices.

The static memory need to be also 128MB aligned, to have other dimm devices aligned too.

This 128MB alignment is a linux limitation, windows can align on 2MB size.

Numa need to be aligned, as linux guest don't boot on some setup with multi sockets,
and windows need numa to be able to hotplug memory

hotplug
----
qm set <vmid> -memory X    (where X is bigger than current value)

unplug (not yet implemented in qemu)
------
qm set <vmid> -memory X  (where X is lower than current value)

linux guest
-----------
-acpi hotplug module should be loaded in guest
-need a recent kernel. (tested with 3.10)

can be enable automaticaly, adding:

/lib/udev/rules.d/80-hotplug-cpu-mem.rules
SUBSYSTEM=="cpu", ACTION=="add", TEST=="online", ATTR{online}=="0", \
 ATTR{online}="1"

SUBSYSTEM=="memory", ACTION=="add", TEST=="state", ATTR{state}=="offline", \
 ATTR{state}="online"

windows guest
-------------

tested with:

- windows 2012 standard
- windows 2008 enterprise/datacenter

Signed-off-by: Alexandre Derumier <aderumier@odiso.com>
9 years agobump version to 3.3-13
Dietmar Maurer [Tue, 27 Jan 2015 11:39:48 +0000 (12:39 +0100)]
bump version to 3.3-13

9 years agouse PVE::Tools::split_list
Dietmar Maurer [Tue, 27 Jan 2015 10:05:36 +0000 (11:05 +0100)]
use PVE::Tools::split_list

9 years agohotplug config: allow to enable specific features
Dietmar Maurer [Tue, 27 Jan 2015 06:16:22 +0000 (07:16 +0100)]
hotplug config: allow to enable specific features

9 years agobump version to 3.3-12
Dietmar Maurer [Fri, 23 Jan 2015 07:05:07 +0000 (08:05 +0100)]
bump version to 3.3-12

9 years agoenable vcpus hotplug
Alexandre Derumier [Fri, 9 Jan 2015 15:30:36 +0000 (16:30 +0100)]
enable vcpus hotplug

Signed-off-by: Alexandre Derumier <aderumier@odiso.com>
9 years agoadd vcpus option
Alexandre Derumier [Fri, 9 Jan 2015 15:30:35 +0000 (16:30 +0100)]
add vcpus option

vcpus = current allocate vpus to virtual machine

maxcpus is now compute from $sockets*cores
vcpus = maxcpus if not defined

Signed-off-by: Alexandre Derumier <aderumier@odiso.com>
9 years agoapply pending changes at vm_stop
Dietmar Maurer [Wed, 21 Jan 2015 09:42:43 +0000 (10:42 +0100)]
apply pending changes at vm_stop

9 years agobump version to 3.3-11
Dietmar Maurer [Wed, 21 Jan 2015 07:53:17 +0000 (08:53 +0100)]
bump version to 3.3-11

9 years agoenable hotplug by default
Dietmar Maurer [Wed, 21 Jan 2015 07:52:37 +0000 (08:52 +0100)]
enable hotplug by default

9 years agoAdd link_down flag to network config
Dietmar Maurer [Tue, 20 Jan 2015 10:47:11 +0000 (11:47 +0100)]
Add link_down flag to network config

Original patch by Wolfgang, adopted for new hotplug implementation.

I do not verify link status, because that patch was rejected upstream.

Signed-off-by: Wolfgang Link <wolfgang@linksystems.org>
Signed-off-by: Dietmar Maurer <dietmar@proxmox.com>
9 years agoChange check for better understanding!
Wolfgang Link [Mon, 29 Dec 2014 09:56:07 +0000 (10:56 +0100)]
Change check for better understanding!

Signed-off-by: Wolfgang Link <wolfgang@linksystems.org>
9 years agobump version to 3.3-10
Dietmar Maurer [Tue, 20 Jan 2015 06:16:14 +0000 (07:16 +0100)]
bump version to 3.3-10

9 years agoSupport additional e1000 variants for VM machines
Kamil Trzcinski [Sat, 17 Jan 2015 12:46:32 +0000 (13:46 +0100)]
Support additional e1000 variants for VM machines

It is required for OS X on qemu

Signed-off-by: Kamil Trzcinski <ayufan@ayufan.eu>
9 years agobump version to 3.3-9
Dietmar Maurer [Thu, 15 Jan 2015 05:23:36 +0000 (06:23 +0100)]
bump version to 3.3-9

9 years agopending api : fix parsing 0 value
Alexandre Derumier [Mon, 12 Jan 2015 14:32:17 +0000 (15:32 +0100)]
pending api : fix parsing 0 value

Signed-off-by: Alexandre Derumier <aderumier@odiso.com>
9 years agofix test for ballon hotplug
Dietmar Maurer [Mon, 12 Jan 2015 14:04:31 +0000 (15:04 +0100)]
fix test for ballon hotplug

9 years agoset boot strict=on to prevent booting from not listed boot devices
Stefan Priebe [Fri, 9 Jan 2015 05:56:15 +0000 (06:56 +0100)]
set boot strict=on to prevent booting from not listed boot devices

Signed-off-by: Stefan Priebe <s.priebe@profihost.ag>
9 years agodo not set romfile= if network is not in boot order
Stefan Priebe [Fri, 9 Jan 2015 05:56:14 +0000 (06:56 +0100)]
do not set romfile= if network is not in boot order

Signed-off-by: Stefan Priebe <s.priebe@profihost.ag>
9 years agobump version to 3.3-8
Dietmar Maurer [Thu, 8 Jan 2015 12:35:07 +0000 (13:35 +0100)]
bump version to 3.3-8

9 years agofix previous commit: forgot API definitions
Dietmar Maurer [Thu, 8 Jan 2015 08:04:18 +0000 (09:04 +0100)]
fix previous commit: forgot API definitions

9 years agoupdate_vm api : add optionnal revert option
Dietmar Maurer [Wed, 7 Jan 2015 10:09:30 +0000 (11:09 +0100)]
update_vm api : add optionnal revert option

Signed-off-by: Alexandre Derumier <aderumier@odiso.com>
Signed-off-by: Dietmar Maurer <dietmar@proxmox.com>
9 years agocode cleanup
Dietmar Maurer [Wed, 7 Jan 2015 09:02:32 +0000 (10:02 +0100)]
code cleanup

9 years agofix balloon pending update
Alexandre Derumier [Fri, 2 Jan 2015 14:16:01 +0000 (15:16 +0100)]
fix balloon pending update

Signed-off-by: Alexandre Derumier <aderumier@odiso.com>
9 years agodon't try to hotplug|unplug ide && sata drive
Alexandre Derumier [Fri, 2 Jan 2015 14:16:00 +0000 (15:16 +0100)]
don't try to hotplug|unplug ide && sata drive

We can't hotplug theses devices,
so we can avoid to throw always an error when adding them

Signed-off-by: Alexandre Derumier <aderumier@odiso.com>
9 years agoadd optionnal current param to config api
Dietmar Maurer [Wed, 7 Jan 2015 07:31:32 +0000 (08:31 +0100)]
add optionnal current param to config api

config api return by default the pending config, like this it don't break current behaviour

Add an optionnal current param to get to current running config

Signed-off-by: Alexandre Derumier <aderumier@odiso.com>
Signed-off-by: Dietmar Maurer <dietmar@proxmox.com>
9 years agoAPI: list new 'pending' method
Dietmar Maurer [Wed, 7 Jan 2015 07:14:14 +0000 (08:14 +0100)]
API: list new 'pending' method

9 years agopending : add disk hot-unplug
Alexandre Derumier [Fri, 2 Jan 2015 14:15:58 +0000 (15:15 +0100)]
pending : add disk hot-unplug

Signed-off-by: Alexandre Derumier <aderumier@odiso.com>
9 years agoremove unused code
Dietmar Maurer [Tue, 25 Nov 2014 11:19:52 +0000 (12:19 +0100)]
remove unused code

Signed-off-by: Dietmar Maurer <dietmar@proxmox.com>
9 years agovmconfig_update_net: do not call vm_deviceplug() if hotplug == 0
Dietmar Maurer [Tue, 25 Nov 2014 11:07:02 +0000 (12:07 +0100)]
vmconfig_update_net: do not call vm_deviceplug() if hotplug == 0

Signed-off-by: Dietmar Maurer <dietmar@proxmox.com>
9 years agovmconfig_hotplug_pending : add update_disk
Dietmar Maurer [Tue, 25 Nov 2014 10:37:37 +0000 (11:37 +0100)]
vmconfig_hotplug_pending : add update_disk

Signed-off-by: Alexandre Derumier <aderumier@odiso.com>
Signed-off-by: Dietmar Maurer <dietmar@proxmox.com>
9 years agovm_deviceplug: always raise exception on error
Dietmar Maurer [Tue, 25 Nov 2014 08:13:37 +0000 (09:13 +0100)]
vm_deviceplug: always raise exception on error

Signed-off-by: Dietmar Maurer <dietmar@proxmox.com>
9 years agovm_deviceunplug: raise expection if something fail
Dietmar Maurer [Tue, 25 Nov 2014 07:29:12 +0000 (08:29 +0100)]
vm_deviceunplug: raise expection if something fail

Signed-off-by: Dietmar Maurer <dietmar@proxmox.com>
9 years agovmconfig_hotplug_pending : add update_net
Dietmar Maurer [Tue, 25 Nov 2014 05:58:33 +0000 (06:58 +0100)]
vmconfig_hotplug_pending : add update_net

Signed-off-by: Alexandre Derumier <aderumier@odiso.com>
Signed-off-by: Dietmar Maurer <dietmar@proxmox.com>
9 years agovmconfig_hotplug_pending: correctly skip values
Dietmar Maurer [Mon, 24 Nov 2014 09:33:51 +0000 (10:33 +0100)]
vmconfig_hotplug_pending: correctly skip values

Do not use $skip variable (simply raise an exception)

Signed-off-by: Dietmar Maurer <dietmar@proxmox.com>
9 years agorename qemu_bridgeadd to qemu_add_pci_bridge
Dietmar Maurer [Mon, 24 Nov 2014 09:13:21 +0000 (10:13 +0100)]
rename qemu_bridgeadd to qemu_add_pci_bridge

To make it obvious that we add a PCI device, and not a network bridge.

Signed-off-by: Dietmar Maurer <dietmar@proxmox.com>
9 years agoimplement API/CLI to get pending changes
Dietmar Maurer [Fri, 21 Nov 2014 10:25:45 +0000 (11:25 +0100)]
implement API/CLI to get pending changes

Signed-off-by: Dietmar Maurer <dietmar@proxmox.com>
9 years agovmconfig_hotplug_pending: improve hotplug error handling
Dietmar Maurer [Wed, 19 Nov 2014 11:59:02 +0000 (12:59 +0100)]
vmconfig_hotplug_pending: improve hotplug error handling

Simplify code, and allow to partially apply pending changes using
a new $selection parameter.

Signed-off-by: Dietmar Maurer <dietmar@proxmox.com>
9 years agocode cleanup, delete trailing white space
Dietmar Maurer [Wed, 19 Nov 2014 09:43:42 +0000 (10:43 +0100)]
code cleanup, delete trailing white space

Signed-off-by: Dietmar Maurer <dietmar@proxmox.com>
9 years agovmconfig_cleanup_pending: new method to clenup setting in [PENDING]
Dietmar Maurer [Wed, 19 Nov 2014 08:20:09 +0000 (09:20 +0100)]
vmconfig_cleanup_pending: new method to clenup setting in [PENDING]

Signed-off-by: Dietmar Maurer <dietmar@proxmox.com>
9 years agovmconfig_hotplug_pending: implement tablet hotplug
Dietmar Maurer [Tue, 18 Nov 2014 12:29:21 +0000 (13:29 +0100)]
vmconfig_hotplug_pending: implement tablet hotplug

Remove special case: now, we only hotplug if 'hotplug' is enabled.

Signed-off-by: Dietmar Maurer <dietmar@proxmox.com>
9 years agoimplement trivial hotplug
Dietmar Maurer [Mon, 17 Nov 2014 08:50:31 +0000 (09:50 +0100)]
implement trivial hotplug

Signed-off-by: Dietmar Maurer <dietmar@proxmox.com>
9 years agofix balloon consistency check (consider pending changes)
Dietmar Maurer [Mon, 17 Nov 2014 08:37:11 +0000 (09:37 +0100)]
fix balloon consistency check (consider pending changes)

Signed-off-by: Dietmar Maurer <dietmar@proxmox.com>
9 years agovm_start: apply pending changes
Dietmar Maurer [Mon, 17 Nov 2014 06:08:44 +0000 (07:08 +0100)]
vm_start: apply pending changes

I move related helper methods into PVE::QemuServer.

Signed-off-by: Dietmar Maurer <dietmar@proxmox.com>
9 years agoimplement vmconfig_apply_pending for stopped VM
Dietmar Maurer [Fri, 14 Nov 2014 10:45:14 +0000 (11:45 +0100)]
implement vmconfig_apply_pending for stopped VM

Signed-off-by: Dietmar Maurer <dietmar@proxmox.com>
9 years agoupdate_vm_api: always write into pending section
Dietmar Maurer [Fri, 14 Nov 2014 09:33:27 +0000 (10:33 +0100)]
update_vm_api: always write into pending section

Signed-off-by: Dietmar Maurer <dietmar@proxmox.com>
9 years agowrite_vm_config : write pending change
Dietmar Maurer [Tue, 11 Nov 2014 06:40:07 +0000 (07:40 +0100)]
write_vm_config : write pending change

example:

$conf->{pending}->{virtio1}
$conf->{pending}->{delete} = "net0,net1"

[PENDING]
virtio1: ...
delete: net0,net1

Signed-off-by: Alexandre Derumier <aderumier@odiso.com>
Signed-off-by: Dietmar Maurer <dietmar@proxmox.com>
9 years agoparse_vm_config: only allow 'delete' inside [PENDING]
Dietmar Maurer [Tue, 11 Nov 2014 06:01:01 +0000 (07:01 +0100)]
parse_vm_config: only allow 'delete' inside [PENDING]

Signed-off-by: Dietmar Maurer <dietmar@proxmox.com>
9 years agoparse_vm_config: correctly handle $descr
Dietmar Maurer [Tue, 11 Nov 2014 05:52:10 +0000 (06:52 +0100)]
parse_vm_config: correctly handle $descr

Signed-off-by: Dietmar Maurer <dietmar@proxmox.com>
9 years agoparse_vm_config : parse pending changes
Alexandre Derumier [Thu, 30 Oct 2014 12:40:22 +0000 (13:40 +0100)]
parse_vm_config : parse pending changes

example:

[PENDING]
virtio1:...
delete:net0,net1

$conf->{pending}->{virtio1}
$conf->{pending}->{del}->{net0}
$conf->{pending}->{del}->{net1}

Signed-off-by: Alexandre Derumier <aderumier@odiso.com>
Signed-off-by: Dietmar Maurer <dietmar@proxmox.com>
9 years agobump version to 3.3-7
Dietmar Maurer [Mon, 22 Dec 2014 16:24:45 +0000 (17:24 +0100)]
bump version to 3.3-7

9 years agothis commit:
Stefan Priebe [Sun, 21 Dec 2014 20:04:13 +0000 (21:04 +0100)]
this commit:

commit 1c0c1c17b020710fd841c399c1e147ccc10007cd
Author: Wolfgang Link <wolfgang@linksystems.org>
Date:   Wed Nov 26 11:11:40 2014 +0100

    shutdown by Qemu Guest Agent if the agent flag in the config is set

    Important: "guest-shutdown" returns only by error a message.

Signed-off-by: Wolfgang Link <wolfgang@linksystems.org>
breaks live migration as it always tries to load the vm config - even in case of $nocheck. Also it double loads the config ($conf && $config)
Signed-off-by: Stefan Priebe <s.priebe@profihost.ag>
9 years agowhite space cleanups
Dietmar Maurer [Wed, 10 Dec 2014 05:40:21 +0000 (06:40 +0100)]
white space cleanups

9 years agoAdd qga freeze in vzdump in snapshot mode
Wolfgang Link [Tue, 9 Dec 2014 10:12:56 +0000 (11:12 +0100)]
Add qga freeze in vzdump in snapshot mode

it will freeze the filesystem to provide consistents.

Signed-off-by: Wolfgang Link <wolfgang@linksystems.org>
9 years agowhite space cleanups
Dietmar Maurer [Thu, 4 Dec 2014 12:07:59 +0000 (13:07 +0100)]
white space cleanups

9 years agoadd custom numa topology support
Alexandre Derumier [Wed, 3 Dec 2014 15:23:48 +0000 (16:23 +0100)]
add custom numa topology support

numaX: cpus=<id[-id],memory=<mb>[[,hostnodes=<id[-id]>][,policy=<preferred|bind|interleave>]]

example:
-------
sockets:4
cores:2
memory:4096
numa: 1
numa0: cpus=0-1,memory=1024,hostnodes=0-1,policy=interleave
numa1: cpus=2-3,memory=3072,hostnodes=2,policy=bind

qemu command line
-----------------
-object memory-backend-ram,size=1024M,policy=interleave,host-nodes=0-1,id=ram-node0
-numa node,nodeid=0,cpus=0-1,memdev=ram-node0

-object memory-backend-ram,size=3072M,policy=bind,host-nodes=2,id=ram-node1
-numa node,nodeid=1,cpus=2-3,memdev=ram-node1

Signed-off-by: Alexandre Derumier <aderumier@odiso.com>
9 years agoadd numa options v3
Alexandre Derumier [Wed, 3 Dec 2014 15:23:47 +0000 (16:23 +0100)]
add numa options v3

This enable numa support inside the guest, and share the memory and cores across the sockets numa nodes.

numa: 0|1

example:
-------
sockets:2
cores:2
memory:4096
numa: 1

qemu command line
-----------------
-object memory-backend-ram,size=2048,id=ram-node0
-numa node,nodeid=0,cpus=0-1,memdev=ram-node0
-object memory-backend-ram,size=2048,id=ram-node1
-numa node,nodeid=1,cpus=2-3,memdev=ram-node1

Signed-off-by: Alexandre Derumier <aderumier@odiso.com>
9 years agobump version to 3.3-6
Dietmar Maurer [Thu, 4 Dec 2014 11:35:10 +0000 (12:35 +0100)]
bump version to 3.3-6

9 years agoFix in PVE::QemuServer::snapshot_create
Wolfgang Link [Wed, 3 Dec 2014 14:40:33 +0000 (15:40 +0100)]
Fix in PVE::QemuServer::snapshot_create

remove the freezefs flag.
If Qemu Guest Agent flag is set in config the vm filesystem will always be frozen,
unless we save RAM.

also remove param freezefs in PVE::API2 snapshot,
because there is no use for it.

Signed-off-by: Wolfgang Link <wolfgang@linksystems.org>
Signed-off-by: Dietmar Maurer <dietmar@proxmox.com>
9 years agosnapshot_create: fix bug from prev. commit, consider $freezefs parameter
Dietmar Maurer [Tue, 2 Dec 2014 12:42:51 +0000 (13:42 +0100)]
snapshot_create: fix bug from prev. commit, consider $freezefs parameter

9 years agosnapshot_create: use guest-fsfreeze-freeze if possible
Wolfgang Link [Tue, 2 Dec 2014 10:42:17 +0000 (11:42 +0100)]
snapshot_create: use guest-fsfreeze-freeze if possible

Signed-off-by: Wolfgang Link <wolfgang@linksystems.org>
Signed-off-by: Dietmar Maurer <dietmar@proxmox.com>
9 years agoqmpclient: use guest-sync-delimited
Dietmar Maurer [Tue, 2 Dec 2014 12:03:55 +0000 (13:03 +0100)]
qmpclient: use guest-sync-delimited

9 years agobump version to 3.3-5
Dietmar Maurer [Mon, 1 Dec 2014 08:31:43 +0000 (09:31 +0100)]
bump version to 3.3-5

9 years agodrive-mirror: avoid division by zero bug
Dietmar Maurer [Mon, 1 Dec 2014 08:27:01 +0000 (09:27 +0100)]
drive-mirror: avoid division by zero bug

9 years agoqmpclient: fix mux_input regex
Dietmar Maurer [Fri, 28 Nov 2014 09:42:12 +0000 (10:42 +0100)]
qmpclient: fix mux_input regex

9 years agoqmpclient: improve error handling
Dietmar Maurer [Fri, 28 Nov 2014 09:32:40 +0000 (10:32 +0100)]
qmpclient: improve error handling

9 years agosimplify code by using vm_qmp_command() directly
Dietmar Maurer [Thu, 27 Nov 2014 12:29:51 +0000 (13:29 +0100)]
simplify code by using vm_qmp_command() directly

9 years agoqmpclient: code cleanup, execute qga and qmp in parallel
Dietmar Maurer [Thu, 27 Nov 2014 10:56:52 +0000 (11:56 +0100)]
qmpclient: code cleanup, execute qga and qmp in parallel

9 years agoshutdown by Qemu Guest Agent if the agent flag in the config is set
Wolfgang Link [Wed, 26 Nov 2014 10:11:40 +0000 (11:11 +0100)]
shutdown by Qemu Guest Agent if the agent flag in the config is set

Important: "guest-shutdown" returns only by error a message.

Signed-off-by: Wolfgang Link <wolfgang@linksystems.org>
9 years agoqmpclient: now if the QMP command starts with guest-+ , it will bind dynamicly to...
Wolfgang Link [Wed, 26 Nov 2014 10:11:39 +0000 (11:11 +0100)]
qmpclient: now if the QMP command starts with guest-+ , it will bind dynamicly to the VMID.qga socket

Signed-off-by: Wolfgang Link <wolfgang@linksystems.org>
9 years agoqmpclient-qga : mux_input : parse qga result
Alexandre Derumier [Sun, 17 Mar 2013 15:09:07 +0000 (16:09 +0100)]
qmpclient-qga : mux_input : parse qga result

result sample:

first json is guest-sync result, second json is command result

{ "return": 123456}\n{"return": {}}

Signed-off-by: Alexandre Derumier <aderumier@odiso.com>
Signed-off-by: Dietmar Maurer <dietmar@proxmox.com>
9 years agoqmpclient-qga : build qga command
Alexandre Derumier [Sun, 17 Mar 2013 15:09:06 +0000 (16:09 +0100)]
qmpclient-qga : build qga command

example of command:

first json is guest-sync to sync and flush the client, second json is the command

{ "execute": "guest-sync", "arguments": { "id": 123456 } }{"execute":"guest-ping"}

Signed-off-by: Alexandre Derumier <aderumier@odiso.com>
9 years agoqmpclient-qga : do not sent qmp_capabilities for qga
Alexandre Derumier [Sun, 17 Mar 2013 15:09:05 +0000 (16:09 +0100)]
qmpclient-qga : do not sent qmp_capabilities for qga

Signed-off-by: Alexandre Derumier <aderumier@odiso.com>
9 years agoqmpclient-qga : cmdid : use integer instead string
Alexandre Derumier [Sun, 17 Mar 2013 15:09:04 +0000 (16:09 +0100)]
qmpclient-qga : cmdid : use integer instead string

qga client use only integer as id

Signed-off-by: Alexandre Derumier <aderumier@odiso.com>
9 years agoqmpclient-qga : add qga param to qmp_socket
Alexandre Derumier [Sun, 17 Mar 2013 15:09:03 +0000 (16:09 +0100)]
qmpclient-qga : add qga param to qmp_socket

Signed-off-by: Alexandre Derumier <aderumier@odiso.com>
9 years agoqmpclient-qga : add qga option at object creation
Alexandre Derumier [Sun, 17 Mar 2013 15:09:02 +0000 (16:09 +0100)]
qmpclient-qga : add qga option at object creation

Signed-off-by: Alexandre Derumier <aderumier@odiso.com>
9 years agoadd vm_qga_command
Alexandre Derumier [Sun, 17 Mar 2013 15:09:01 +0000 (16:09 +0100)]
add vm_qga_command

and reuse vm_qmp_command && qmp_socket with $qga param

Signed-off-by: Alexandre Derumier <aderumier@odiso.com>
9 years agocode cleanups
Dietmar Maurer [Fri, 21 Nov 2014 11:31:56 +0000 (12:31 +0100)]
code cleanups

9 years agosavevm-end : wait that savevm is finished
Alexandre Derumier [Thu, 20 Nov 2014 13:54:10 +0000 (14:54 +0100)]
savevm-end : wait that savevm is finished

savevm-end is async, we need to wait that savevm is finished, before continue.

Signed-off-by: Alexandre Derumier <aderumier@odiso.com>
9 years agoserial: allow to pass arbitrary device names
Dietmar Maurer [Mon, 1 Dec 2014 08:47:36 +0000 (09:47 +0100)]
serial: allow to pass arbitrary device names

10 years agoAdd check if host has enough real CPUs for starting VM
Wolfgang Link [Mon, 17 Nov 2014 08:52:30 +0000 (09:52 +0100)]
Add check if host has enough real CPUs for starting VM

To prevent a Qemu CPU emualtion!

Signed-off-by: Wolfgang Link <wolfgang@linksystems.org>
10 years agoqemu_drive_mirror: cleanup, avoid code duplication
Dietmar Maurer [Mon, 10 Nov 2014 07:18:39 +0000 (08:18 +0100)]
qemu_drive_mirror: cleanup, avoid code duplication

10 years agoqemu_drive_mirror: raise exception if we cannot parse $dst_volid
Dietmar Maurer [Mon, 10 Nov 2014 06:55:09 +0000 (07:55 +0100)]
qemu_drive_mirror: raise exception if we cannot parse $dst_volid

10 years agobump version to 3.3-3
Dietmar Maurer [Mon, 10 Nov 2014 05:32:31 +0000 (06:32 +0100)]
bump version to 3.3-3

10 years agodelete trailing whitespace
Dietmar Maurer [Mon, 10 Nov 2014 05:31:08 +0000 (06:31 +0100)]
delete trailing whitespace

10 years agoblock-job-complete : retry if block job cannot be complete
Alexandre Derumier [Sun, 9 Nov 2014 14:13:01 +0000 (15:13 +0100)]
block-job-complete : retry if block job cannot be complete

Even if we check the busy flag, we can have sometime race condition if new write
are coming between the query-block-job and the block-job-complete.

block-job-complete throw an error "The active block job for device '%(name)' cannot be completed"

we just need to retry in this case.

Signed-off-by: Alexandre Derumier <aderumier@odiso.com>
10 years agobump version to 3.3-2
Dietmar Maurer [Fri, 7 Nov 2014 14:45:56 +0000 (15:45 +0100)]
bump version to 3.3-2

10 years agocleanup: do not entry wait loop if block-job-cancel() fails.
Dietmar Maurer [Fri, 7 Nov 2014 14:31:56 +0000 (15:31 +0100)]
cleanup: do not entry wait loop if block-job-cancel() fails.

10 years agodrive-mirror : wait that busy eq false before block-job-complete
Alexandre Derumier [Fri, 7 Nov 2014 09:10:48 +0000 (10:10 +0100)]
drive-mirror : wait that busy eq false before block-job-complete

When the drive-mirror is at 100%, and write occurs, the busy flag can change from false->true

- 100% no new writes

transferred: 1073741824 bytes remaining: 0 bytes total: 1073741824 bytes progression: 100.00 % busy: false
transferred: 1073741824 bytes remaining: 0 bytes total: 1073741824 bytes progression: 100.00 % busy: false
transferred: 1073741824 bytes remaining: 0 bytes total: 1073741824 bytes progression: 100.00 % busy: false

- 100% new writes

transferred: 1073741824 bytes remaining: 0 bytes total: 1073741824 bytes progression: 100.00 % busy: true
transferred: 1073741824 bytes remaining: 0 bytes total: 1073741824 bytes progression: 100.00 % busy: true
transferred: 1073741824 bytes remaining: 0 bytes total: 1073741824 bytes progression: 100.00 % busy: true

- 100% no new writes

transferred: 1073741824 bytes remaining: 0 bytes total: 1073741824 bytes progression: 100.00 % busy: false
transferred: 1073741824 bytes remaining: 0 bytes total: 1073741824 bytes progression: 100.00 % busy: false
transferred: 1073741824 bytes remaining: 0 bytes total: 1073741824 bytes progression: 100.00 % busy: false

So, we need to check that busy is false before doing the block-job-complete.

Also, we force the vm to pause, if it's busy for more than 120s when drive-mirror is at 100%

Signed-off-by: Alexandre Derumier <aderumier@odiso.com>
10 years agoblock-job-cancel : wait that jobs is really finished
Alexandre Derumier [Fri, 7 Nov 2014 09:10:47 +0000 (10:10 +0100)]
block-job-cancel : wait that jobs is really finished

block-job-cancel is async, we need to check that job is really finished

before try to free the volume

Signed-off-by: Alexandre Derumier <aderumier@odiso.com>
10 years agobump version to 3.3-1
Dietmar Maurer [Mon, 13 Oct 2014 08:36:23 +0000 (10:36 +0200)]
bump version to 3.3-1

10 years agoenable write zeroes optimisations
Alexandre Derumier [Mon, 13 Oct 2014 07:45:30 +0000 (09:45 +0200)]
enable write zeroes optimisations

This enable write zeroes optimisation inside guest.

(I have tested them with qcow2,raw (ext4|xfs) , zfs|iscsi and nfs too.

No impact if the block driver don't support it yet (like rbd)

https://lists.nongnu.org/archive/html/qemu-devel/2014-04/msg00009.html

> a) mkfs.ext4 -E lazy_itable_init=0,lazy_journal_init=0 /dev/vdX
>
> QCOW2         [off]     [on]     [unmap]
> -----
> runtime:       14secs    1.1secs  1.1secs
> filesize:      937M      18M      18M
>
> iSCSI         [off]     [on]     [unmap]
> ----
> runtime:       9.3s      0.9s     0.9s
>
> b) dd if=/dev/zero of=/dev/vdX bs=1M oflag=direct
>
> QCOW2         [off]     [on]     [unmap]
> -----
> runtime:       246secs   18secs   18secs
> filesize:      51G       192K     192K
> throughput:    203M/s    2.3G/s   2.3G/s
>
> iSCSI*        [off]     [on]     [unmap]
> ----
> runtime:       8mins     45secs   33secs
> throughput:    106M/s    1.2G/s   1.6G/s
> allocated:     100%      100%     0%

Signed-off-by: Alexandre Derumier <aderumier@odiso.com>
10 years agoadd iothread/dataplane support
Alexandre Derumier [Fri, 10 Oct 2014 02:05:44 +0000 (04:05 +0200)]
add iothread/dataplane support

new config option:

iothread: 1|0

This enable iothread/dataplane support, to improve io performance on fast storages

Currently block jobs don't work yet, it's planned for qemu 2.2.
So it's better to not expose yet this option in gui.

Signed-off-by: Alexandre Derumier <aderumier@odiso.com>