On Thu, Mar 05, 2020 at 10:43:15 +0100, Pavel Mores wrote:
On Wed, Mar 04, 2020 at 06:26:31PM +0100, Peter Krempa wrote:
> Starting a commit job will require disabling bitmaps in the base image
> so that they are not dirtied by the commit job. We need to store a list
> of the bitmaps so that we can later re-enable them.
>
> Add a field and status XML handling code as well as a test.
>
> Signed-off-by: Peter Krempa <pkrempa(a)redhat.com>
> ---
> src/qemu/qemu_blockjob.h | 2 ++
> src/qemu/qemu_domain.c | 26 +++++++++++++++++++
> .../blockjob-blockdev-in.xml | 4 +++
> 3 files changed, 32 insertions(+)
>
> diff --git a/src/qemu/qemu_blockjob.h b/src/qemu/qemu_blockjob.h
> index 72c7fa053e..e2e28ca4d3 100644
> --- a/src/qemu/qemu_blockjob.h
> +++ b/src/qemu/qemu_blockjob.h
> @@ -88,6 +88,8 @@ struct _qemuBlockJobCommitData {
> virStorageSourcePtr top;
> virStorageSourcePtr base;
> bool deleteCommittedImages;
> + char **disabledBitmapsBase; /* a NULL-terminated list of bitmap names which
> + were disabled in @base for the commit job */
> };
Is it guaranteed that the new member 'disabledBitmapsBase' is properly
initialised? How about something along the lines of
diff --git a/src/qemu/qemu_blockjob.c b/src/qemu/qemu_blockjob.c
index 2e53821d43..f9fc83430e 100644
--- a/src/qemu/qemu_blockjob.c
+++ b/src/qemu/qemu_blockjob.c
@@ -312,6 +312,7 @@ qemuBlockJobDiskNewCommit(virDomainObjPtr vm,
job->data.commit.top = top;
job->data.commit.base = base;
job->data.commit.deleteCommittedImages = delete_imgs;
+ job->data.commit.disabledBitmapsBase = NULL;
job->jobflags = jobflags;
if (qemuBlockJobRegister(job, vm, disk, true) < 0)
Even if explicit initialisation is somehow not needed here, I'd consider that
fact worth a line of explanation in the commit message.
g_new0 and VIR_ALLOC (which uses calloc) always zero-out the memory
which is allocated. This means that setting integers to 0, pointers to
NULL and booleans to false is always assumed when allocating a new
object and we rarely re-initialize it explicitly if ever.