From f5fe33504d90bf47d3f766470a04b16eca56bfd8 Mon Sep 17 00:00:00 2001 Message-Id: From: Peter Krempa Date: Wed, 19 Feb 2020 15:10:04 +0100 Subject: [PATCH] qemuMonitorBlockdevAdd: Take double pointer argument MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Modify qemuMonitorBlockdevAdd so that it takes a double pointer for the @props argument so that it's cleared inside the call. This allows writing cleaner callers. Signed-off-by: Peter Krempa Reviewed-by: Ján Tomko Reviewed-by: Daniel Henrique Barboza (cherry picked from commit db57e9daf5ab25bd7a1f377c4dde160b0896ad64) https://bugzilla.redhat.com/show_bug.cgi?id=1798366 Message-Id: <1b4429b82826f69f18b506b8fbd648ff0ac70c38.1582120424.git.pkrempa@redhat.com> Reviewed-by: Ján Tomko --- src/qemu/qemu_block.c | 14 ++------------ src/qemu/qemu_monitor.c | 16 ++++++---------- src/qemu/qemu_monitor.h | 2 +- src/qemu/qemu_monitor_json.c | 5 +++-- src/qemu/qemu_monitor_json.h | 2 +- 5 files changed, 13 insertions(+), 26 deletions(-) diff --git a/src/qemu/qemu_block.c b/src/qemu/qemu_block.c index 0ee10dd770..710ddfd2cf 100644 --- a/src/qemu/qemu_block.c +++ b/src/qemu/qemu_block.c @@ -1537,13 +1537,8 @@ static int qemuBlockStorageSourceAttachApplyStorage(qemuMonitorPtr mon, qemuBlockStorageSourceAttachDataPtr data) { - int rv; - if (data->storageProps) { - rv = qemuMonitorBlockdevAdd(mon, data->storageProps); - data->storageProps = NULL; - - if (rv < 0) + if (qemuMonitorBlockdevAdd(mon, &data->storageProps) < 0) return -1; data->storageAttached = true; @@ -1570,13 +1565,8 @@ static int qemuBlockStorageSourceAttachApplyFormat(qemuMonitorPtr mon, qemuBlockStorageSourceAttachDataPtr data) { - int rv; - if (data->formatProps) { - rv = qemuMonitorBlockdevAdd(mon, data->formatProps); - data->formatProps = NULL; - - if (rv < 0) + if (qemuMonitorBlockdevAdd(mon, &data->formatProps) < 0) return -1; data->formatAttached = true; diff --git a/src/qemu/qemu_monitor.c b/src/qemu/qemu_monitor.c index 0e67851690..e3ee48613a 100644 --- a/src/qemu/qemu_monitor.c +++ b/src/qemu/qemu_monitor.c @@ -4391,23 +4391,19 @@ qemuMonitorBlockdevCreate(qemuMonitorPtr mon, * @mon: monitor object * @props: JSON object describing the blockdev to add * - * Adds a new block device (BDS) to qemu. Note that @props is always consumed - * by this function and should not be accessed after calling this function. + * Adds a new block device (BDS) to qemu. Note that *@props is consumed + * and set to NULL on success. */ int qemuMonitorBlockdevAdd(qemuMonitorPtr mon, - virJSONValuePtr props) + virJSONValuePtr *props) { - VIR_DEBUG("props=%p (node-name=%s)", props, - NULLSTR(virJSONValueObjectGetString(props, "node-name"))); + VIR_DEBUG("props=%p (node-name=%s)", *props, + NULLSTR(virJSONValueObjectGetString(*props, "node-name"))); - QEMU_CHECK_MONITOR_GOTO(mon, error); + QEMU_CHECK_MONITOR(mon); return qemuMonitorJSONBlockdevAdd(mon, props); - - error: - virJSONValueFree(props); - return -1; } diff --git a/src/qemu/qemu_monitor.h b/src/qemu/qemu_monitor.h index cca2cdcb27..6a6b8efaee 100644 --- a/src/qemu/qemu_monitor.h +++ b/src/qemu/qemu_monitor.h @@ -1323,7 +1323,7 @@ int qemuMonitorBlockdevCreate(qemuMonitorPtr mon, virJSONValuePtr props); int qemuMonitorBlockdevAdd(qemuMonitorPtr mon, - virJSONValuePtr props); + virJSONValuePtr *props); int qemuMonitorBlockdevDel(qemuMonitorPtr mon, const char *nodename); diff --git a/src/qemu/qemu_monitor_json.c b/src/qemu/qemu_monitor_json.c index 05a44882f0..3827574ef6 100644 --- a/src/qemu/qemu_monitor_json.c +++ b/src/qemu/qemu_monitor_json.c @@ -8811,12 +8811,13 @@ qemuMonitorJSONBlockdevCreate(qemuMonitorPtr mon, int qemuMonitorJSONBlockdevAdd(qemuMonitorPtr mon, - virJSONValuePtr props) + virJSONValuePtr *props) { g_autoptr(virJSONValue) cmd = NULL; g_autoptr(virJSONValue) reply = NULL; + virJSONValuePtr pr = g_steal_pointer(props); - if (!(cmd = qemuMonitorJSONMakeCommandInternal("blockdev-add", props))) + if (!(cmd = qemuMonitorJSONMakeCommandInternal("blockdev-add", pr))) return -1; if (qemuMonitorJSONCommand(mon, cmd, &reply) < 0) diff --git a/src/qemu/qemu_monitor_json.h b/src/qemu/qemu_monitor_json.h index 61f5b0061d..fd2e09025e 100644 --- a/src/qemu/qemu_monitor_json.h +++ b/src/qemu/qemu_monitor_json.h @@ -597,7 +597,7 @@ int qemuMonitorJSONBlockdevCreate(qemuMonitorPtr mon, ATTRIBUTE_NONNULL(1); int qemuMonitorJSONBlockdevAdd(qemuMonitorPtr mon, - virJSONValuePtr props) + virJSONValuePtr *props) ATTRIBUTE_NONNULL(1) ATTRIBUTE_NONNULL(2); int qemuMonitorJSONBlockdevDel(qemuMonitorPtr mon, -- 2.25.0