So that you can see nice report on migration:
"error: operation failed: migration of disk sda failed: No space left on device"
diff from v2:
1. split into 2 patches
2. change formal documentation where it is present accordingly
3. add variable initialization for safet
Ouch, I don't escape test patch [1] in message body so
is is applied together with the main patch. Be careful.
On 08.09.2017 10:16, Nikolay Shirokovskiy wrote:
> Patch aeda1b8c needs some enhancement.
>
> 1. Shutdown event is delivired on reboot too and we don't want
> to set wil
Patch aeda1b8c needs some enhancement.
1. Shutdown event is delivired on reboot too and we don't want
to set willhangup flag is this case.
2. There is a next race condition.
- EOF is delivered in event loop thread
- qemuMonitorSend is called on client behalf and waits for notification
on
On 07.09.2017 14:48, Jiri Denemark wrote:
> On Fri, Sep 01, 2017 at 09:49:24 +0300, Nikolay Shirokovskiy wrote:
>> qemuMigrationFetchJobStatus is rather inconvinient. Some of its
>> callers don't need status to be updated, some don't need to update
>> elapsed time right
EINVAL is returned.
Nikolay Shirokovskiy (4):
iohelper: drop unused operation length limit
iohelper: simplify last direct write alignment
iohelper: reduce zero-out in align case
iohelper: fix reading with O_DIRECT
src/util/iohelper.c | 98
We only need to zero-out bytes that will be written.
May be we even don't need to zero-out at all because
of immediate truncate.
---
src/util/iohelper.c | 7 ---
1 file changed, 4 insertions(+), 3 deletions(-)
diff --git a/src/util/iohelper.c b/src/util/iohelper.c
index 1896fd3..fe15a92
saferead is not suitable for direct reads. If file size is not multiple
of align size then we get EINVAL on the read(2) that is supposed to
return 0 because read buffer will not be aligned at this point.
Let's not read again after partial read and check that we read
everything by comparing the
---
src/util/iohelper.c | 28 +++-
src/util/virfile.c | 2 +-
2 files changed, 8 insertions(+), 22 deletions(-)
diff --git a/src/util/iohelper.c b/src/util/iohelper.c
index d7bf5c7..5fc311b 100644
--- a/src/util/iohelper.c
+++ b/src/util/iohelper.c
@@ -44,7 +44,7 @@
Make alignment of last direct write more straightforward. Using
additionally two flags 'end' and 'shortRead' looks complicated.
---
src/util/iohelper.c | 33 +
1 file changed, 17 insertions(+), 16 deletions(-)
diff --git a/src/util/iohelper.c b/src/util/iohelper.c
Instead of checking stat.status let's set status to migrating
as soon as migrate command is send (waiting for completion
is a good place too).
---
src/qemu/qemu_domain.c| 1 +
src/qemu/qemu_domain.h| 1 +
src/qemu/qemu_driver.c| 4 +++-
src/qemu/qemu_migration.c | 9 +++--
4 files
---
src/qemu/qemu_driver.c | 25 +++--
1 file changed, 11 insertions(+), 14 deletions(-)
diff --git a/src/qemu/qemu_driver.c b/src/qemu/qemu_driver.c
index 43244d0..fe41b9f 100644
--- a/src/qemu/qemu_driver.c
+++ b/src/qemu/qemu_driver.c
@@ -12987,12 +12987,17 @@
In case of real migration (not migrating to file on save, dump etc)
migration info is not complete at time qemu finishes migration
in normal (non postcopy) mode. We need to update disks stats,
downtime info etc. Thus let's not expose this job status as
completed.
To archive this let's set status
qemuMigrationFetchJobStatus is rather inconvinient. Some of its
callers don't need status to be updated, some don't need to update
elapsed time right away. So let's update status or elapsed time
in callers instead.
This patch drops updating job status on getting job stats by
client. This way we
Looks like it is more simple to drop this optimization as we are
going to add getting disks stats during migration via quering qemu
process and checking if we have to acquire job condition becomes
more complicate.
---
src/qemu/qemu_driver.c | 15 +--
1 file changed, 5 insertions(+),
qemuMonitorGetMigrationStats will do it for us anyway.
---
src/qemu/qemu_migration.c | 1 -
1 file changed, 1 deletion(-)
diff --git a/src/qemu/qemu_migration.c b/src/qemu/qemu_migration.c
index 33171e5..e2760d1 100644
--- a/src/qemu/qemu_migration.c
+++ b/src/qemu/qemu_migration.c
@@ -1387,7
This patch simply switches code from using VIR_DOMAIN_JOB_* to
introduced QEMU_DOMAIN_JOB_STATUS_*. Later this gives us freedom
to introduce states for postcopy and mirroring phases.
---
src/qemu/qemu_domain.c | 27 --
src/qemu/qemu_domain.h | 10 +++-
This way we get stats only in one place. The former code waits for
complete/postcopy status basically and don't need to mess with stats.
The patch drops raising an error on stats updates failure. This
does not make much sense anyway.
---
src/qemu/qemu_migration.c | 24 +++-
1
Let's introduce QEMU_DOMAIN_JOB_STATUS_POSTCOPY state for job.current->status
instead of checking job.current->stats.status. The latter can be changed
when fetching migration statistics. Moving state function from the variable
and leave only store function seems more managable.
This patch removes
qemu driver does not have VIR_DOMAIN_JOB_BOUNDED jobs and
timeRemaining is always 0.
---
src/qemu/qemu_domain.c | 7 ---
src/qemu/qemu_domain.h | 1 -
src/qemu/qemu_driver.c | 3 +--
src/qemu/qemu_migration_cookie.c | 5 -
4 files changed, 1 insertion(+), 15
When getting job info in case mirror does not reach ready phase
fetch mirror stats from qemu. Otherwise mirror stats are already
saved in current job.
---
src/qemu/qemu_domain.c| 31 +++
src/qemu/qemu_domain.h| 9
src/qemu/qemu_driver.c| 5 +
.
Patches that were explicitly ACKed in previous review
(up to style issues) marked with A.
Nikolay Shirokovskiy (13):
A qemu: drop code for VIR_DOMAIN_JOB_BOUNDED and timeRemaining
A qemu: introduce qemu domain job status
A qemu: introduce QEMU_DOMAIN_JOB_STATUS_POSTCOPY
A qemu: drop
Setting status to none has little value - getting job status
will not return even elapsed time.
After this patch getting job stats stays correct in a sence
it will not fetch migration stats because it consults
stats.status before doing the fetch.
---
src/qemu/qemu_domain.c| 1 +
Querying destination migration statistics may result in getting
a failure or getting a elapsed time value depending on stats.status
value which is odd. Instead let's always fail. Clients should
be ready to handle this as currently getting failure period
can be considerable.
---
We call qemuDomainGetMachineName on domain start. On first
start (after daemon start) pid is 0 and virSystemdGetMachineNameByPID
don't get called. But after domain shutting down pid became -1 so
on next start virSystemdGetMachineNameByPID is called and returned an error.
Error is ignored so it is
On 31.08.2017 10:25, Michal Privoznik wrote:
> On 08/30/2017 01:19 PM, Nikolay Shirokovskiy wrote:
>> 'make dist' fails with error now:
>>
>> make[2]: Entering directory `/root/dev/libvirt/src'
>> make[2]: *** No rule to make target `linux', needed by `distdir
On 28.08.2017 17:55, Jiri Denemark wrote:
> On Thu, Aug 24, 2017 at 09:56:40 +0300, Nikolay Shirokovskiy wrote:
>> Current code consults job.current->stats.status to check for postcopy
>> state. First it is more correct to check for both job.current->status
>> and job
'make dist' fails with error now:
make[2]: Entering directory `/root/dev/libvirt/src'
make[2]: *** No rule to make target `linux', needed by `distdir'. Stop
It turns out that in am__libvirt_util_la_SOURCES_DIST variable KEYTABLES
is not expanded correctly. Like 'linux' stays 'linux' instead of
On 30.08.2017 11:07, Jiri Denemark wrote:
> On Thu, Aug 24, 2017 at 09:56:50 +0300, Nikolay Shirokovskiy wrote:
>> Let's store disks stats for completed mirror jobs in current
>> job info. So on getting migration job stats thru API
>> we take records for completed jobs
On 29.08.2017 18:20, Jiri Denemark wrote:
> On Thu, Aug 24, 2017 at 09:56:49 +0300, Nikolay Shirokovskiy wrote:
>> This patch shows incorrect info when client request comes
>> when migration routine is stopping mirror jobs or mirror
>> jobs already stopped. This issue will
On 29.08.2017 16:45, Jiri Denemark wrote:
> On Thu, Aug 24, 2017 at 09:56:43 +0300, Nikolay Shirokovskiy wrote:
>> qemuMigrationFetchJobStatus is rather inconvinient. Some of its
>> callers don't need status to be updated, some don't need to update
>> elapsed time right
This patch simply switches code from using VIR_DOMAIN_JOB_* to
introduced QEMU_DOMAIN_JOB_STATUS_*. Later this gives us freedom
to introduce states for postcopy and mirroring phases.
---
src/qemu/qemu_domain.c | 27 --
src/qemu/qemu_domain.h | 10 +++-
This patch shows incorrect info when client request comes
when migration routine is stopping mirror jobs or mirror
jobs already stopped. This issue will be addressed in next
patch.
---
src/qemu/qemu_driver.c| 4
src/qemu/qemu_migration.c | 49
qemu driver does not have VIR_DOMAIN_JOB_BOUNDED jobs and
timeRemaining is always 0.
---
src/qemu/qemu_domain.c | 7 ---
src/qemu/qemu_domain.h | 1 -
src/qemu/qemu_migration_cookie.c | 5 -
3 files changed, 13 deletions(-)
diff --git a/src/qemu/qemu_domain.c
In case of real migration (not migrating to file on save, dump etc)
migration info is not complete at time qemu finishes migration
in normal (non postcopy) mode. We need to update disks stats,
downtime info etc. Thus let's not expose this job status as
completed.
To archive this let's set status
qemuMigrationFetchJobStatus is rather inconvinient. Some of its
callers don't need status to be updated, some don't need to update
elapsed time right away. So let's update status or elapsed time
in callers instead.
In qemuMigrationConfirmPhase we should fetch stats with copy
flag set as stats
Let's store disks stats for completed mirror jobs in current
job info. So on getting migration job stats thru API
we take records for completed jobs from current job info
and records for still active jobs by querying qemu process.
As we need to keep disks stats for completed mirror jobs
in
During stopping mirror block jobs vm lock is droped on awating block
job events, thus next scenario is possible:
1. stop mirror block job is sent
2. migration routine awaits for block job event
3. mirror job stopped and event send
4. getting migration job info routine asks for block job info and
Current code consults job.current->stats.status to check for postcopy
state. First it is more correct to check for both job.current->status
and job.current->stats.status.code because on some paths on failures
we change only the former. Second if qemu supports migration events
then stats can change
Looks like it is more simple to drop this optimization as we are
going to add getting disks stats during migration via quering qemu
process and checking if we have to acquire job condition becomes
more complicate.
---
src/qemu/qemu_driver.c | 15 +--
1 file changed, 5 insertions(+),
Instead of checking stat.status let's set status to migrating
as soon as migrate command is send (waiting for completion
is a good place too).
---
src/qemu/qemu_domain.c| 1 +
src/qemu/qemu_domain.h| 1 +
src/qemu/qemu_driver.c| 4 +++-
src/qemu/qemu_migration.c | 9 +++--
4 files
---
src/qemu/qemu_migration.c | 7 +++
1 file changed, 7 insertions(+)
diff --git a/src/qemu/qemu_migration.c b/src/qemu/qemu_migration.c
index 906f8fe..54cfdd0 100644
--- a/src/qemu/qemu_migration.c
+++ b/src/qemu/qemu_migration.c
@@ -3867,6 +3867,13 @@ qemuMigrationRun(virQEMUDriverPtr
This way we get stats only in one place. The former code waits for
complete/postcopy status basically and don't need to mess with stats.
The patch drops raising an error on stats updates failure. This
does not make much sense anyway.
---
src/qemu/qemu_migration.c | 24 +++-
1
Setting status to none has little value - getting job status
will not return even elapsed time.
After this patch getting job stats stays correct in a sence
it will not fetch migration stats because it consults
stats.status before doing the fetch.
---
src/qemu/qemu_domain.c| 1 +
---
src/qemu/qemu_driver.c | 26 --
1 file changed, 12 insertions(+), 14 deletions(-)
diff --git a/src/qemu/qemu_driver.c b/src/qemu/qemu_driver.c
index c62d416..b8a4df7 100644
--- a/src/qemu/qemu_driver.c
+++ b/src/qemu/qemu_driver.c
@@ -12905,12 +12905,18 @@
] memory migration stats example
Memory processed: 3.307 MiB
Memory remaining: 0.000 B
Memory total: 1.032 GiB
Nikolay Shirokovskiy (16):
qemu: drop code for VIR_DOMAIN_JOB_BOUNDED and timeRemaining
A qemu: introduce qemu domain job status
A qemu: introduce QEMU_DOMAIN_JOB_STATUS_POSTCOPY
A qemu
qemuMonitorGetMigrationStats will do it for us anyway.
---
src/qemu/qemu_migration.c | 1 -
1 file changed, 1 deletion(-)
diff --git a/src/qemu/qemu_migration.c b/src/qemu/qemu_migration.c
index b7ad65d..cc42f7a 100644
--- a/src/qemu/qemu_migration.c
+++ b/src/qemu/qemu_migration.c
@@ -1387,7
Querying destination migration statistics may result in getting
a failure or getting a elapsed time value depending on stats.status
value which is odd. Instead let's always fail. Clients should
be ready to handle this as currently getting failure period
can be considerable.
---
6e6faf6d changed vzDomObjAlloc signature in source but not in header file.
---
src/vz/vz_utils.h | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/src/vz/vz_utils.h b/src/vz/vz_utils.h
index ea2e2da..d213183 100644
--- a/src/vz/vz_utils.h
+++ b/src/vz/vz_utils.h
@@ -116,7 +116,7
On 03.08.2017 15:18, John Ferlan wrote:
>
>
> On 06/30/2017 02:34 AM, Nikolay Shirokovskiy wrote:
>> At the time the check was written virtuozzo did not use disabled items in
>> boot
>> order configuration. Boot items were always enabled. Now they can be disa
On 03.08.2017 02:24, John Ferlan wrote:
>
>
> On 03/28/2017 04:10 AM, Nikolay Shirokovskiy wrote:
>> Disk serial schema has extra '.+' allowed characters in comparison
>> with check in code. Looks like there is no reason for that as qemu
>> allows any
On 14.07.2017 12:20, Jiri Denemark wrote:
> On Fri, Jul 14, 2017 at 09:51:48 +0300, Nikolay Shirokovskiy wrote:
>> ping
>
> Oops, I completely forgot about this series. But since it is a few
> months old, could you resend the series after rebasing it to current
> libvirt
ping
On 11.04.2017 10:39, Nikolay Shirokovskiy wrote:
> diff from v2:
>
>
> 1. Fix style issues.
> 2. Rework patch for fetching job info
>(save logic to use temporary variable when drop vm lock)
> 3. Update disk stats when block jobs are canceled.
> 4.
At the time the check was written virtuozzo did not use disabled items in boot
order configuration. Boot items were always enabled. Now they can be disabled
as well. Supporting such items is easy - they just should be ignored.
---
src/vz/vz_sdk.c | 7 ++-
1 file changed, 2 insertions(+), 5
---
src/vz/vz_sdk.c | 7 ++-
1 file changed, 2 insertions(+), 5 deletions(-)
diff --git a/src/vz/vz_sdk.c b/src/vz/vz_sdk.c
index 8ccd7ea..a6eb0dd 100644
--- a/src/vz/vz_sdk.c
+++ b/src/vz/vz_sdk.c
@@ -1736,11 +1736,8 @@ prlsdkConvertBootOrderVm(PRL_HANDLE sdkdom,
virDomainDefPtr def)
ping
On 02.05.2017 13:06, Nikolay Shirokovskiy wrote:
> This is the next version of RFC [1] 'drop nested job concept'. Actually
> it is quite different from the first. Patches that accomodate callers to
> use functions to enter/exit monitor with without driver and asyncJob arguments
&g
Actually physical size is not available in vz sdk right now so let's
set it to allocation as an estimation in non sparse case.
---
src/vz/vz_driver.c | 50 ++
src/vz/vz_sdk.c| 23 +++
src/vz/vz_sdk.h| 1 +
3 files
Supported options
- backup to file or block device
- specify format of backup
---
src/conf/backup_conf.c | 32 ++
src/conf/backup_conf.h | 5 +++
src/libvirt_private.syms | 1 +
src/qemu/qemu_driver.c | 112 ++-
4 files changed,
/archives/libvir-list/2016-March/msg00937.html
[2] https://www.redhat.com/archives/libvir-list/2016-September/msg00192.html
[3] https://www.redhat.com/archives/libvir-list/2017-May/msg00130.html
Nikolay Shirokovskiy (12):
api: backup: add api to create backup
api: backup: add driver based
---
docs/Makefile.am | 3 +++
docs/apibuild.py | 2 ++
docs/docs.html.in | 4 +++-
docs/format.html.in | 1 +
docs/formatbackup.html.in | 58 +++
docs/index.html.in| 3 ++-
6 files changed, 69 insertions(+),
---
daemon/remote.c | 8
src/access/viraccessperm.c | 3 ++-
src/access/viraccessperm.h | 6 ++
src/remote/remote_driver.c | 7 +++
src/remote/remote_protocol.x | 23 ++-
src/rpc/gendispatch.pl | 29 ++---
6
---
include/libvirt/virterror.h | 2 +
src/Makefile.am | 2 +
src/datatypes.c | 60 +
src/datatypes.h | 29 ++
src/driver-hypervisor.h | 5 ++
src/libvirt-domain-backup.c | 209
Backup xml description is like this:
backup name
- element is optional.
- disk @type attribute is optional, default to 'file'. Valid
values are 'file', 'block', 'dir', 'network', 'volume' just
as usual for specifing domain disk sources. It specifies
backup type.
-
---
src/qemu/qemu_monitor.c | 14 ++
src/qemu/qemu_monitor.h | 5 +
src/qemu/qemu_monitor_json.c | 34 ++
src/qemu/qemu_monitor_json.h | 5 +
4 files changed, 58 insertions(+)
diff --git a/src/qemu/qemu_monitor.c
Prepare here is usual preparation for a disk to be used by qemu made
by qemuDomainDiskChainElementPrepare. That is set security labels,
add to lock manager and whitelist in cgroups. All three are related to
backup target too. Adding to a lock manager is less obvious but
can be useful if mirations
---
examples/object-events/event-test.c | 3 +++
include/libvirt/libvirt-domain.h| 3 +++
src/conf/domain_conf.c | 2 +-
src/qemu/qemu_monitor_json.c| 2 ++
tools/virsh-domain.c| 3 ++-
5 files changed, 11 insertions(+), 2 deletions(-)
diff --git
If backup target is file then check it is not present or regular
empty file otherwise. If backup target is block device then
check that it is present and block device actually.
---
src/qemu/qemu_driver.c | 73 ++
1 file changed, 73 insertions(+)
+ * Author: Nikolay Shirokovskiy <nshirokovs...@virtuozzo.com>
+ *
+ * Copyright (C) 2017 Parallels International GmbH
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free So
---
docs/schemas/domainbackup.rng | 79 ++
tests/domainbackupxml/block_target.xml | 5 ++
tests/domainbackupxml/explicit_description.xml | 6 ++
tests/domainbackupxml/explicit_file_type.xml | 5 ++
tests/domainbackupxml/explicit_format.xml
---
po/POTFILES.in | 1 +
tools/Makefile.am| 1 +
tools/virsh-backup.c | 100 +++
tools/virsh-backup.h | 29 +++
tools/virsh-util.c | 11 ++
tools/virsh-util.h | 3 ++
tools/virsh.c| 2 ++
---
docs/Makefile.am | 22 --
1 file changed, 20 insertions(+), 2 deletions(-)
diff --git a/docs/Makefile.am b/docs/Makefile.am
index 105fe68..7a10a50 100644
--- a/docs/Makefile.am
+++ b/docs/Makefile.am
@@ -54,6 +54,20 @@ css = \
libvirt.css \
main.css
+fonts
On 10.05.2017 11:11, Daniel P. Berrange wrote:
> On Fri, May 05, 2017 at 09:22:21AM +0300, Nikolay Shirokovskiy wrote:
>> Push backup is a backup when hypervisor itself copy backup data to
>> destination
>> in contrast to pull backup when hypervisor exports backup data t
+ * Author: Nikolay Shirokovskiy <nshirokovs...@virtuozzo.com>
+ *
+ * Copyright (C) 2017 Parallels International GmbH
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free So
Prepare here is usual preparation for a disk to be used by qemu made
by qemuDomainDiskChainElementPrepare. That is set security labels,
add to lock manager and whitelist in cgroups. All three are related to
backup target too. Adding to a lock manager is less obvious but
can be useful if mirations
Backup xml description is like this:
backup name
- element is optional.
- disk @type attribute is optional, default to 'file'. Valid
values are 'file', 'block', 'dir', 'network', 'volume' just
as usual for specifing domain disk sources. It specifies
backup type.
-
---
include/libvirt/virterror.h | 2 +
src/Makefile.am | 2 +
src/datatypes.c | 60 +
src/datatypes.h | 29 +++
src/driver-hypervisor.h | 5 ++
src/libvirt-domain-backup.c | 202
---
src/qemu/qemu_monitor.c | 14 ++
src/qemu/qemu_monitor.h | 5 +
src/qemu/qemu_monitor_json.c | 34 ++
src/qemu/qemu_monitor_json.h | 5 +
4 files changed, 58 insertions(+)
diff --git a/src/qemu/qemu_monitor.c
and retry if job to be
aborted is completed meanwhile.
Of coures this series is far from being complete. Incremental backups and
backup persistent metadata is to be implemented. Let's just start work in this
direction.
Nikolay Shirokovskiy (10):
api: backup: add api to create backup
api: backup
Supported options
- backup to file or block device
- specify format of backup
---
src/conf/backup_conf.c | 32 ++
src/conf/backup_conf.h | 5 +++
src/libvirt_private.syms | 1 +
src/qemu/qemu_driver.c | 112 ++-
4 files changed,
If backup target is file then check it is not present or regular
empty file otherwise. If backup target is block device then
check that it is present and block device actually.
---
src/qemu/qemu_driver.c | 73 ++
1 file changed, 73 insertions(+)
---
examples/object-events/event-test.c | 3 +++
include/libvirt/libvirt-domain.h| 3 +++
src/conf/domain_conf.c | 2 +-
src/qemu/qemu_monitor_json.c| 2 ++
tools/virsh-domain.c| 3 ++-
5 files changed, 11 insertions(+), 2 deletions(-)
diff --git
---
daemon/remote.c | 8
src/access/viraccessperm.c | 3 ++-
src/access/viraccessperm.h | 6 ++
src/remote/remote_driver.c | 7 +++
src/remote/remote_protocol.x | 23 ++-
src/rpc/gendispatch.pl | 29 ++---
6
On 03.05.2017 13:44, Konstantin Neumoin wrote:
> No need begin job for asynchronous operation.
>
> Signed-off-by: Konstantin Neumoin
> ---
> src/vz/vz_sdk.c | 16 ++--
> 1 file changed, 2 insertions(+), 14 deletions(-)
>
> diff --git a/src/vz/vz_sdk.c
On 03.05.2017 13:44, Konstantin Neumoin wrote:
> Need begin job before lookup disk in config,
> because it can be edited at this moment.
I would slightly change commit message to something like:
Put domain access after acquiring job condition, otherwise
another job can change it meanwhile.
On 03.05.2017 14:23, Konstantin Neumoin wrote:
> We have to use waitDomainJob instead of waitJob, because of it
> unlock the domain until job has finished, so domain will be available
> for other clients.
>
> Signed-off-by: Konstantin Neumoin
> ---
> src/vz/vz_sdk.c |
It is not clear whether nested job could be saved in status file or not
so it stays in job types enum.
---
src/qemu/qemu_domain.c | 28 +---
src/qemu/qemu_domain.h | 6 +-
src/qemu/qemu_process.c | 2 +-
3 files changed, 3 insertions(+), 33 deletions(-)
diff --git
81f50cb92 adds getting nested job on stopping domain to prevent leaking of
monitor object on race between aborting job and stopping domain cased by that
abort.
One of the causes of this problem is that async job and concurrent regular job
were not fully isolated and async job can continue to run
As qemuProcessStop is called only in the context of some job and jobs
can not overlap now this check becomes useless. Previously async job
can continue to run while concurrent regular job is still waiting
for qemu response. Now it is not possible.
---
src/qemu/qemu_domain.c | 33
Nested job is a construction that gives way to run regular jobs while async job
is running. But the period when another job is actually can be started is when
async job waits for some event with domain lock dropped. Let's code this
condition straitforward using asyncInterruptible flag. Upon
://www.redhat.com/archives/libvir-list/2016-November/msg01357.html
Nikolay Shirokovskiy (4):
qemu: replace nested job with interruptible async job state
qemu: remove liveness check from qemuDomainObjExitMonitor
qemu: remove nesting job usage from qemuProcessStop
qemu: remove the rest of nested
On 27.04.2017 15:40, Jiri Denemark wrote:
> On Fri, Apr 07, 2017 at 14:06:23 +0300, Nikolay Shirokovskiy wrote:
>> Nikolay Shirokovskiy (2):
>> qemu: take current async job into account in qemuBlockNodeNamesDetect
>> qemu: migration: fix race on cancelling drive m
ping
On 07.04.2017 14:06, Nikolay Shirokovskiy wrote:
> Nikolay Shirokovskiy (2):
> qemu: take current async job into account in qemuBlockNodeNamesDetect
> qemu: migration: fix race on cancelling drive mirror
>
> src/qemu/qemu_block.c | 6 --
> src/qemu/qem
On 14.04.2017 13:01, Konstantin Neumoin wrote:
> Signed-off-by: Konstantin Neumoin
> ---
> src/vz/vz_driver.c | 58
> ++
> src/vz/vz_sdk.c| 37 ++
> src/vz/vz_sdk.h| 1 +
> 3
On 14.04.2017 13:01, Konstantin Neumoin wrote:
> Signed-off-by: Konstantin Neumoin
> ---
> src/vz/vz_driver.c | 43 +++
> src/vz/vz_sdk.c| 23 +++
> src/vz/vz_sdk.h| 1 +
> 3 files changed, 67
Ok, forget about it) because c3de3873 "qemu: Don't update physical storage size
of empty drives" is already in upstream.
On 30.01.2017 10:14, Nikolay Shirokovskiy wrote:
> Looks like it was introduced in c5f61513. Before this commit handling empty
> cdrom
> was correct be
ping
On 28.03.2017 11:10, Nikolay Shirokovskiy wrote:
> Disk serial schema has extra '.+' allowed characters in comparison
> with check in code. Looks like there is no reason for that as qemu
> allows any character AFAIK for serial. This discrepancy is originated
> in 85d15b51 w
Current code consults job.current->stats.status to check for postcopy
state. First it is more correct to check for both job.current->status
and job.current->stats.status.code because on some paths on failures
we change only the former. Second if qemu supports migration events
then stats can change
Instead of checking stat.status let's set status to migrating
as soon as migrate command is send (waiting for completion
is a good place too).
---
src/qemu/qemu_domain.c| 1 +
src/qemu/qemu_domain.h| 1 +
src/qemu/qemu_driver.c| 4 +++-
src/qemu/qemu_migration.c | 9 +++--
4 files
Looks like it is more simple to drop this optimization as we are
going to add getting disks stats during migration via quering qemu
process and checking if we have to acquire job condition becomes
more complicate.
---
src/qemu/qemu_driver.c | 15 +--
1 file changed, 5 insertions(+),
During stopping mirror block jobs vm lock is droped on awating block
job events, thus next scenario is possible:
1. stop mirror block job is sent
2. migration routine awaits for block job event
3. mirror job stopped and event send
4. getting migration job info routine asks for block job info and
Let's store disks stats for completed mirror jobs in current
job info. So on getting migration job stats thru API
we take records for completed jobs from current job info
and records for still active jobs by querying qemu process.
As we need to keep disks stats for completed mirror jobs
in
801 - 900 of 1686 matches
Mail list logo