Re: [GSoC][PATCH v2] qemu_domainjob: removal of its dependency on other qemu-files

2020-07-09 Thread Michal Privoznik

On 7/8/20 8:33 PM, Prathamesh Chavan wrote:

It was seen that `qemu_domain.h` file depended upon
`qemu_migration_params.h` and `qmeu_monitor.h` as they
were required by some qemu_domainjob stuctures.
This dependency was removed by the introduction of
a `void *privateData` pointer. This privateData pointer
was handled using a structure of callback functions.

Additionally, the patch also moves funcitons
`qemuDomainObjPrivateXMLFormatJob` and
`qemuDomainObjPrivateXMLParseJob` from `qemu_domain`
and handles them using the callback structure of
domain jobs.

Signed-off-by: Prathamesh Chavan 
---
Previous version of this patch can be found here[1].

This patch adds a funciton to the domainJobInfo callback
structure to specifically to copy the jobInfo privateData
structure.

Also, it was noticed that qemuDomainNamespace was reciding
in `qmeu_domainjob.c`, and should rather be in its original file
`qmeu_domain.c`. hence was moved.

  src/qemu/qemu_backup.c   |  13 +-
  src/qemu/qemu_domain.c   | 251 +---
  src/qemu/qemu_domainjob.c| 386 ---
  src/qemu/qemu_domainjob.h|  69 --
  src/qemu/qemu_driver.c   |  21 +-
  src/qemu/qemu_migration.c|  45 ++--
  src/qemu/qemu_migration_cookie.c |   7 +-
  src/qemu/qemu_migration_params.c |   9 +-
  src/qemu/qemu_migration_params.h |  28 +++
  src/qemu/qemu_process.c  |  24 +-
  10 files changed, 515 insertions(+), 338 deletions(-)


This is very large change. Can it be split into smaller patches so that 
it is easier to review? There are several things happening at the same 
time hence I think it should be possible.


Michal



[GSoC][PATCH v2] qemu_domainjob: removal of its dependency on other qemu-files

2020-07-08 Thread Prathamesh Chavan
It was seen that `qemu_domain.h` file depended upon
`qemu_migration_params.h` and `qmeu_monitor.h` as they
were required by some qemu_domainjob stuctures.
This dependency was removed by the introduction of
a `void *privateData` pointer. This privateData pointer
was handled using a structure of callback functions.

Additionally, the patch also moves funcitons
`qemuDomainObjPrivateXMLFormatJob` and
`qemuDomainObjPrivateXMLParseJob` from `qemu_domain`
and handles them using the callback structure of
domain jobs.

Signed-off-by: Prathamesh Chavan 
---
Previous version of this patch can be found here[1].

This patch adds a funciton to the domainJobInfo callback
structure to specifically to copy the jobInfo privateData
structure.

Also, it was noticed that qemuDomainNamespace was reciding
in `qmeu_domainjob.c`, and should rather be in its original file
`qmeu_domain.c`. hence was moved.

 src/qemu/qemu_backup.c   |  13 +-
 src/qemu/qemu_domain.c   | 251 +---
 src/qemu/qemu_domainjob.c| 386 ---
 src/qemu/qemu_domainjob.h|  69 --
 src/qemu/qemu_driver.c   |  21 +-
 src/qemu/qemu_migration.c|  45 ++--
 src/qemu/qemu_migration_cookie.c |   7 +-
 src/qemu/qemu_migration_params.c |   9 +-
 src/qemu/qemu_migration_params.h |  28 +++
 src/qemu/qemu_process.c  |  24 +-
 10 files changed, 515 insertions(+), 338 deletions(-)

diff --git a/src/qemu/qemu_backup.c b/src/qemu/qemu_backup.c
index b711f8f623..82dc7797cb 100644
--- a/src/qemu/qemu_backup.c
+++ b/src/qemu/qemu_backup.c
@@ -529,17 +529,19 @@ qemuBackupJobTerminate(virDomainObjPtr vm,
 
 {
 qemuDomainObjPrivatePtr priv = vm->privateData;
+qemuDomainJobInfoPrivatePtr completedJobInfo;
 size_t i;
 
 qemuDomainJobInfoUpdateTime(priv->job.current);
 
 g_clear_pointer(>job.completed, qemuDomainJobInfoFree);
 priv->job.completed = qemuDomainJobInfoCopy(priv->job.current);
+completedJobInfo = priv->job.completed->privateData;
 
-priv->job.completed->stats.backup.total = priv->backup->push_total;
-priv->job.completed->stats.backup.transferred = 
priv->backup->push_transferred;
-priv->job.completed->stats.backup.tmp_used = priv->backup->pull_tmp_used;
-priv->job.completed->stats.backup.tmp_total = priv->backup->pull_tmp_total;
+completedJobInfo->stats.backup.total = priv->backup->push_total;
+completedJobInfo->stats.backup.transferred = 
priv->backup->push_transferred;
+completedJobInfo->stats.backup.tmp_used = priv->backup->pull_tmp_used;
+completedJobInfo->stats.backup.tmp_total = priv->backup->pull_tmp_total;
 
 priv->job.completed->status = jobstatus;
 priv->job.completed->errmsg = g_strdup(priv->backup->errmsg);
@@ -1069,7 +1071,8 @@ qemuBackupGetJobInfoStats(virQEMUDriverPtr driver,
   virDomainObjPtr vm,
   qemuDomainJobInfoPtr jobInfo)
 {
-qemuDomainBackupStats *stats = >stats.backup;
+qemuDomainJobInfoPrivatePtr jobInfoPriv = jobInfo->privateData;
+qemuDomainBackupStats *stats = >stats.backup;
 qemuDomainObjPrivatePtr priv = vm->privateData;
 qemuMonitorJobInfoPtr *blockjobs = NULL;
 size_t nblockjobs = 0;
diff --git a/src/qemu/qemu_domain.c b/src/qemu/qemu_domain.c
index 42cc78ac1b..c77e809045 100644
--- a/src/qemu/qemu_domain.c
+++ b/src/qemu/qemu_domain.c
@@ -83,6 +83,11 @@
 
 VIR_LOG_INIT("qemu.qemu_domain");
 
+VIR_ENUM_IMPL(qemuDomainNamespace,
+  QEMU_DOMAIN_NS_LAST,
+  "mount",
+);
+
 /**
  * qemuDomainObjFromDomain:
  * @domain: Domain pointer that has to be looked up
@@ -2162,103 +2167,6 @@ qemuDomainObjPrivateXMLFormatPR(virBufferPtr buf,
 virBufferAddLit(buf, "\n");
 }
 
-
-static int
-qemuDomainObjPrivateXMLFormatNBDMigrationSource(virBufferPtr buf,
-virStorageSourcePtr src,
-virDomainXMLOptionPtr xmlopt)
-{
-g_auto(virBuffer) attrBuf = VIR_BUFFER_INITIALIZER;
-g_auto(virBuffer) childBuf = VIR_BUFFER_INIT_CHILD(buf);
-
-virBufferAsprintf(, " type='%s' format='%s'",
-  virStorageTypeToString(src->type),
-  virStorageFileFormatTypeToString(src->format));
-
-if (virDomainDiskSourceFormat(, src, "source", 0, false,
-  VIR_DOMAIN_DEF_FORMAT_STATUS,
-  false, false, xmlopt) < 0)
-return -1;
-
-virXMLFormatElement(buf, "migrationSource", , );
-
-return 0;
-}
-
-
-static int
-qemuDomainObjPrivateXMLFormatNBDMigration(virBufferPtr buf,
-  virDomainObjPtr vm)
-{
-qemuDomainObjPrivatePtr priv = vm->privateData;
-size_t i;
-virDomainDiskDefPtr disk;
-qemuDomainDiskPrivatePtr diskPriv;
-
-for (i = 0; i < vm->def->ndisks; i++) {
-g_auto(virBuffer) attrBuf = VIR_BUFFER_INITIALIZER;
-