@@ -78,6 +78,9 @@ void hmp_change_vnc(Monitor *mon, const char *device, const char *target,
const char *arg, const char *read_only, bool force,
Error **errp);
#endif
+void hmp_change_medium(Monitor *mon, const char *device, const char *target,
+ const char *arg, const char *read_only, bool force,
+ Error **errp);
void hmp_migrate(Monitor *mon, const QDict *qdict);
void hmp_device_add(Monitor *mon, const QDict *qdict);
void hmp_device_del(Monitor *mon, const QDict *qdict);
@@ -1005,3 +1005,24 @@ void hmp_info_snapshots(Monitor *mon, const QDict *qdict)
g_free(sn_tab);
g_free(global_snapshots);
}
+
+void hmp_change_medium(Monitor *mon, const char *device, const char *target,
+ const char *arg, const char *read_only, bool force,
+ Error **errp)
+{
+ ERRP_GUARD();
+ BlockdevChangeReadOnlyMode read_only_mode = 0;
+
+ if (read_only) {
+ read_only_mode =
+ qapi_enum_parse(&BlockdevChangeReadOnlyMode_lookup,
+ read_only,
+ BLOCKDEV_CHANGE_READ_ONLY_MODE_RETAIN, errp);
+ if (*errp) {
+ return;
+ }
+ }
+
+ qmp_blockdev_change_medium(device, NULL, target, arg, true, force,
+ !!read_only, read_only_mode, errp);
+}
@@ -24,7 +24,6 @@
#include "qapi/error.h"
#include "qapi/clone-visitor.h"
#include "qapi/qapi-builtin-visit.h"
-#include "qapi/qapi-commands-block.h"
#include "qapi/qapi-commands-control.h"
#include "qapi/qapi-commands-migration.h"
#include "qapi/qapi-commands-misc.h"
@@ -916,7 +915,6 @@ void hmp_change(Monitor *mon, const QDict *qdict)
const char *arg = qdict_get_try_str(qdict, "arg");
const char *read_only = qdict_get_try_str(qdict, "read-only-mode");
bool force = qdict_get_try_bool(qdict, "force", false);
- BlockdevChangeReadOnlyMode read_only_mode = 0;
Error *err = NULL;
#ifdef CONFIG_VNC
@@ -925,22 +923,9 @@ void hmp_change(Monitor *mon, const QDict *qdict)
} else
#endif
{
- if (read_only) {
- read_only_mode =
- qapi_enum_parse(&BlockdevChangeReadOnlyMode_lookup,
- read_only,
- BLOCKDEV_CHANGE_READ_ONLY_MODE_RETAIN, &err);
- if (err) {
- goto end;
- }
- }
-
- qmp_blockdev_change_medium(device, NULL, target, arg, true, force,
- !!read_only, read_only_mode,
- &err);
+ hmp_change_medium(mon, device, target, arg, read_only, force, &err);
}
-end:
hmp_handle_error(mon, err);
}
Signed-off-by: Markus Armbruster <armbru@redhat.com> --- include/monitor/hmp.h | 3 +++ block/monitor/block-hmp-cmds.c | 21 +++++++++++++++++++++ monitor/hmp-cmds.c | 17 +---------------- 3 files changed, 25 insertions(+), 16 deletions(-)