[PATCH 0/4] jobs: make & use generalized virDomainObjInitJob()

This series uses qemuDomainObjInitJob() as virDomainObjInitJob() in all drivers that use virDomainObjJob structure. Kristina Hanicova (4): qemu & hypervisor: move qemuDomainObjInitJob() into hypervisor libxl: use virDomainObjInitJob() LXC: use virDomainObjInitJob() CH: use virDomainObjInitJob() src/ch/ch_domain.c | 13 +------------ src/hypervisor/domain_job.c | 25 +++++++++++++++++++++++++ src/hypervisor/domain_job.h | 4 ++++ src/libvirt_private.syms | 1 + src/libxl/libxl_domain.c | 17 +++-------------- src/lxc/lxc_domain.c | 13 +------------ src/qemu/qemu_domain.c | 2 +- src/qemu/qemu_domainjob.c | 26 -------------------------- src/qemu/qemu_domainjob.h | 4 ---- 9 files changed, 36 insertions(+), 69 deletions(-) -- 2.35.3

This patch moves qemuDomainObjInitJob() as virDomainObjInitJob() into hypervisor in order to be used by other drivers as well. Signed-off-by: Kristina Hanicova <khanicov@redhat.com> --- src/hypervisor/domain_job.c | 25 +++++++++++++++++++++++++ src/hypervisor/domain_job.h | 4 ++++ src/libvirt_private.syms | 1 + src/qemu/qemu_domain.c | 2 +- src/qemu/qemu_domainjob.c | 26 -------------------------- src/qemu/qemu_domainjob.h | 4 ---- 6 files changed, 31 insertions(+), 31 deletions(-) diff --git a/src/hypervisor/domain_job.c b/src/hypervisor/domain_job.c index 6a0fbd42b3..1ee70ea11e 100644 --- a/src/hypervisor/domain_job.c +++ b/src/hypervisor/domain_job.c @@ -112,3 +112,28 @@ virDomainJobStatusToType(virDomainJobStatus status) return VIR_DOMAIN_JOB_NONE; } + +int +virDomainObjInitJob(virDomainJobObj *job, + virDomainObjPrivateJobCallbacks *cb) +{ + memset(job, 0, sizeof(*job)); + job->cb = cb; + + if (virCondInit(&job->cond) < 0) + return -1; + + if (virCondInit(&job->asyncCond) < 0) { + virCondDestroy(&job->cond); + return -1; + } + + if (job->cb && + !(job->privateData = job->cb->allocJobPrivate())) { + virCondDestroy(&job->cond); + virCondDestroy(&job->asyncCond); + return -1; + } + + return 0; +} diff --git a/src/hypervisor/domain_job.h b/src/hypervisor/domain_job.h index 9c203189a6..7c65c4f8cd 100644 --- a/src/hypervisor/domain_job.h +++ b/src/hypervisor/domain_job.h @@ -204,3 +204,7 @@ struct _virDomainObjPrivateJobCallbacks { virDomainObjPrivateJobFormat formatJobPrivate; virDomainObjPrivateJobParse parseJobPrivate; }; + + +int virDomainObjInitJob(virDomainJobObj *job, + virDomainObjPrivateJobCallbacks *cb); diff --git a/src/libvirt_private.syms b/src/libvirt_private.syms index f4732f1742..58c05a532c 100644 --- a/src/libvirt_private.syms +++ b/src/libvirt_private.syms @@ -1590,6 +1590,7 @@ virDomainJobDataInit; virDomainJobStatusToType; virDomainJobTypeFromString; virDomainJobTypeToString; +virDomainObjInitJob; # hypervisor/virclosecallbacks.h diff --git a/src/qemu/qemu_domain.c b/src/qemu/qemu_domain.c index 2d7f6d761d..7df8041adf 100644 --- a/src/qemu/qemu_domain.c +++ b/src/qemu/qemu_domain.c @@ -1755,7 +1755,7 @@ qemuDomainObjPrivateAlloc(void *opaque) { g_autoptr(qemuDomainObjPrivate) priv = g_new0(qemuDomainObjPrivate, 1); - if (qemuDomainObjInitJob(&priv->job, &qemuPrivateJobCallbacks) < 0) { + if (virDomainObjInitJob(&priv->job, &qemuPrivateJobCallbacks) < 0) { virReportSystemError(errno, "%s", _("Unable to init qemu driver mutexes")); return NULL; diff --git a/src/qemu/qemu_domainjob.c b/src/qemu/qemu_domainjob.c index 82189393a2..74ea975e44 100644 --- a/src/qemu/qemu_domainjob.c +++ b/src/qemu/qemu_domainjob.c @@ -150,32 +150,6 @@ qemuDomainEventEmitJobCompleted(virQEMUDriver *driver, } -int -qemuDomainObjInitJob(virDomainJobObj *job, - virDomainObjPrivateJobCallbacks *cb) -{ - memset(job, 0, sizeof(*job)); - job->cb = cb; - - if (virCondInit(&job->cond) < 0) - return -1; - - if (virCondInit(&job->asyncCond) < 0) { - virCondDestroy(&job->cond); - return -1; - } - - if (job->cb && - !(job->privateData = job->cb->allocJobPrivate())) { - virCondDestroy(&job->cond); - virCondDestroy(&job->asyncCond); - return -1; - } - - return 0; -} - - static void qemuDomainObjResetJob(virDomainJobObj *job) { diff --git a/src/qemu/qemu_domainjob.h b/src/qemu/qemu_domainjob.h index b39b04edcb..36747154c6 100644 --- a/src/qemu/qemu_domainjob.h +++ b/src/qemu/qemu_domainjob.h @@ -138,10 +138,6 @@ bool qemuDomainTrackJob(virDomainJob job); void qemuDomainObjClearJob(virDomainJobObj *job); G_DEFINE_AUTO_CLEANUP_CLEAR_FUNC(virDomainJobObj, qemuDomainObjClearJob); -int -qemuDomainObjInitJob(virDomainJobObj *job, - virDomainObjPrivateJobCallbacks *cb); - int qemuDomainObjPrivateXMLFormatJob(virBuffer *buf, virDomainObj *vm); -- 2.35.3

This patch removes and replaces libxlDomainObjInitJob() with general virDomainObjInitJob(). Signed-off-by: Kristina Hanicova <khanicov@redhat.com> --- src/libxl/libxl_domain.c | 17 +++-------------- 1 file changed, 3 insertions(+), 14 deletions(-) diff --git a/src/libxl/libxl_domain.c b/src/libxl/libxl_domain.c index ce515ec54e..e2e078bd50 100644 --- a/src/libxl/libxl_domain.c +++ b/src/libxl/libxl_domain.c @@ -44,19 +44,6 @@ VIR_LOG_INIT("libxl.libxl_domain"); -static int -libxlDomainObjInitJob(libxlDomainObjPrivate *priv) -{ - memset(&priv->job, 0, sizeof(priv->job)); - - if (virCondInit(&priv->job.cond) < 0) - return -1; - - priv->job.current = virDomainJobDataInit(NULL); - - return 0; -} - static void libxlDomainObjResetJob(libxlDomainObjPrivate *priv) { @@ -190,12 +177,14 @@ libxlDomainObjPrivateAlloc(void *opaque G_GNUC_UNUSED) return NULL; } - if (libxlDomainObjInitJob(priv) < 0) { + if (virDomainObjInitJob(&priv->job, NULL) < 0) { virChrdevFree(priv->devs); g_free(priv); return NULL; } + priv->job.current = virDomainJobDataInit(NULL); + return priv; } -- 2.35.3

This patch removes and replaces virLXCDomainObjInitJob() with general virDomainObjInitJob(). Signed-off-by: Kristina Hanicova <khanicov@redhat.com> --- src/lxc/lxc_domain.c | 13 +------------ 1 file changed, 1 insertion(+), 12 deletions(-) diff --git a/src/lxc/lxc_domain.c b/src/lxc/lxc_domain.c index 16b667de95..fed4ae088a 100644 --- a/src/lxc/lxc_domain.c +++ b/src/lxc/lxc_domain.c @@ -35,17 +35,6 @@ VIR_LOG_INIT("lxc.lxc_domain"); -static int -virLXCDomainObjInitJob(virLXCDomainObjPrivate *priv) -{ - memset(&priv->job, 0, sizeof(priv->job)); - - if (virCondInit(&priv->job.cond) < 0) - return -1; - - return 0; -} - static void virLXCDomainObjResetJob(virLXCDomainObjPrivate *priv) { @@ -145,7 +134,7 @@ virLXCDomainObjPrivateAlloc(void *opaque) { virLXCDomainObjPrivate *priv = g_new0(virLXCDomainObjPrivate, 1); - if (virLXCDomainObjInitJob(priv) < 0) { + if (virDomainObjInitJob(&priv->job, NULL) < 0) { g_free(priv); return NULL; } -- 2.35.3

This patch removes and replaces virCHDomainObjInitJob() with general virDomainObjInitJob(). Signed-off-by: Kristina Hanicova <khanicov@redhat.com> --- src/ch/ch_domain.c | 13 +------------ 1 file changed, 1 insertion(+), 12 deletions(-) diff --git a/src/ch/ch_domain.c b/src/ch/ch_domain.c index 2afb3582b1..ae53c6fe05 100644 --- a/src/ch/ch_domain.c +++ b/src/ch/ch_domain.c @@ -32,17 +32,6 @@ VIR_LOG_INIT("ch.ch_domain"); -static int -virCHDomainObjInitJob(virCHDomainObjPrivate *priv) -{ - memset(&priv->job, 0, sizeof(priv->job)); - - if (virCondInit(&priv->job.cond) < 0) - return -1; - - return 0; -} - static void virCHDomainObjResetJob(virCHDomainObjPrivate *priv) { @@ -143,7 +132,7 @@ virCHDomainObjPrivateAlloc(void *opaque) priv = g_new0(virCHDomainObjPrivate, 1); - if (virCHDomainObjInitJob(priv) < 0) { + if (virDomainObjInitJob(&priv->job, NULL) < 0) { g_free(priv); return NULL; } -- 2.35.3

On Thu, Jul 21, 2022 at 01:54:45PM +0200, Kristina Hanicova wrote:
This series uses qemuDomainObjInitJob() as virDomainObjInitJob() in all
I would prefer to rather use a name "virDomainJobObjInit" since it initialises the job obj. It is not a domain object that initialises a job. With that changed (and obvious relevant fixed applied) Reviewed-by: Martin Kletzander <mkletzan@redhat.com>
drivers that use virDomainObjJob structure.
Kristina Hanicova (4): qemu & hypervisor: move qemuDomainObjInitJob() into hypervisor libxl: use virDomainObjInitJob() LXC: use virDomainObjInitJob() CH: use virDomainObjInitJob()
src/ch/ch_domain.c | 13 +------------ src/hypervisor/domain_job.c | 25 +++++++++++++++++++++++++ src/hypervisor/domain_job.h | 4 ++++ src/libvirt_private.syms | 1 + src/libxl/libxl_domain.c | 17 +++-------------- src/lxc/lxc_domain.c | 13 +------------ src/qemu/qemu_domain.c | 2 +- src/qemu/qemu_domainjob.c | 26 -------------------------- src/qemu/qemu_domainjob.h | 4 ---- 9 files changed, 36 insertions(+), 69 deletions(-)
-- 2.35.3
participants (2)
-
Kristina Hanicova
-
Martin Kletzander