Message ID | 20200308092440.23564-6-mlevitsk@redhat.com (mailing list archive) |
---|---|
State | New, archived |
Headers | show |
Series | HMP monitor handlers refactoring | expand |
I see that I have the same issue of long subject line here. Its because I forgot the space after first line, when adding this. If I need to resend another version of this patchset I'll fix this, but otherwise maybe that can be fixed when applying this to one of maintainer's trees. Sorry for noise. Best regards, Maxim Levitsky On Sun, 2020-03-08 at 11:24 +0200, Maxim Levitsky wrote: > Signed-off-by: Maxim Levitsky <mlevitsk@redhat.com> > Reviewed-by: Dr. David Alan Gilbert <dgilbert@redhat.com> > --- > block/monitor/block-hmp-cmds.c | 60 ++++++++++++++++++++++++++++++++++ > include/block/block-hmp-cmds.h | 12 +++++-- > include/monitor/hmp.h | 2 -- > monitor/hmp-cmds.c | 58 -------------------------------- > 4 files changed, 69 insertions(+), 63 deletions(-) > > diff --git a/block/monitor/block-hmp-cmds.c b/block/monitor/block-hmp-cmds.c > index ad727a6b08..d6dd5d97f7 100644 > --- a/block/monitor/block-hmp-cmds.c > +++ b/block/monitor/block-hmp-cmds.c > @@ -37,10 +37,12 @@ > #include "qapi/qapi-commands-block.h" > #include "qapi/qmp/qdict.h" > #include "qapi/error.h" > +#include "qapi/qmp/qerror.h" > #include "qemu/config-file.h" > #include "qemu/option.h" > #include "sysemu/sysemu.h" > #include "monitor/monitor.h" > +#include "monitor/hmp.h" > #include "block/block_int.h" > #include "block/block-hmp-cmds.h" > > @@ -187,3 +189,61 @@ void hmp_commit(Monitor *mon, const QDict *qdict) > error_report("'commit' error for '%s': %s", device, strerror(-ret)); > } > } > + > +void hmp_drive_mirror(Monitor *mon, const QDict *qdict) > +{ > + const char *filename = qdict_get_str(qdict, "target"); > + const char *format = qdict_get_try_str(qdict, "format"); > + bool reuse = qdict_get_try_bool(qdict, "reuse", false); > + bool full = qdict_get_try_bool(qdict, "full", false); > + Error *err = NULL; > + DriveMirror mirror = { > + .device = (char *)qdict_get_str(qdict, "device"), > + .target = (char *)filename, > + .has_format = !!format, > + .format = (char *)format, > + .sync = full ? MIRROR_SYNC_MODE_FULL : MIRROR_SYNC_MODE_TOP, > + .has_mode = true, > + .mode = reuse ? NEW_IMAGE_MODE_EXISTING : NEW_IMAGE_MODE_ABSOLUTE_PATHS, > + .unmap = true, > + }; > + > + if (!filename) { > + error_setg(&err, QERR_MISSING_PARAMETER, "target"); > + hmp_handle_error(mon, err); > + return; > + } > + qmp_drive_mirror(&mirror, &err); > + hmp_handle_error(mon, err); > +} > + > +void hmp_drive_backup(Monitor *mon, const QDict *qdict) > +{ > + const char *device = qdict_get_str(qdict, "device"); > + const char *filename = qdict_get_str(qdict, "target"); > + const char *format = qdict_get_try_str(qdict, "format"); > + bool reuse = qdict_get_try_bool(qdict, "reuse", false); > + bool full = qdict_get_try_bool(qdict, "full", false); > + bool compress = qdict_get_try_bool(qdict, "compress", false); > + Error *err = NULL; > + DriveBackup backup = { > + .device = (char *)device, > + .target = (char *)filename, > + .has_format = !!format, > + .format = (char *)format, > + .sync = full ? MIRROR_SYNC_MODE_FULL : MIRROR_SYNC_MODE_TOP, > + .has_mode = true, > + .mode = reuse ? NEW_IMAGE_MODE_EXISTING : NEW_IMAGE_MODE_ABSOLUTE_PATHS, > + .has_compress = !!compress, > + .compress = compress, > + }; > + > + if (!filename) { > + error_setg(&err, QERR_MISSING_PARAMETER, "target"); > + hmp_handle_error(mon, err); > + return; > + } > + > + qmp_drive_backup(&backup, &err); > + hmp_handle_error(mon, err); > +} > diff --git a/include/block/block-hmp-cmds.h b/include/block/block-hmp-cmds.h > index 30b0f56415..a64b737b3a 100644 > --- a/include/block/block-hmp-cmds.h > +++ b/include/block/block-hmp-cmds.h > @@ -3,10 +3,13 @@ > * > * Copyright (c) 2003-2008 Fabrice Bellard > * Copyright (c) 2020 Red Hat, Inc. > + * Copyright IBM, Corp. 2011 > * > - * This work is licensed under the terms of the GNU GPL, version 2. > - * or (at your option) any later version. > - * See the COPYING file in the top-level directory. > + * Authors: > + * Anthony Liguori <aliguori@us.ibm.com> > + * > + * This work is licensed under the terms of the GNU GPL, version 2. See > + * the COPYING file in the top-level directory. > */ > > #ifndef BLOCK_HMP_COMMANDS_H > @@ -17,4 +20,7 @@ void hmp_drive_add(Monitor *mon, const QDict *qdict); > void hmp_commit(Monitor *mon, const QDict *qdict); > void hmp_drive_del(Monitor *mon, const QDict *qdict); > > +void hmp_drive_mirror(Monitor *mon, const QDict *qdict); > +void hmp_drive_backup(Monitor *mon, const QDict *qdict); > + > #endif > diff --git a/include/monitor/hmp.h b/include/monitor/hmp.h > index 3d329853b2..c1b363ee57 100644 > --- a/include/monitor/hmp.h > +++ b/include/monitor/hmp.h > @@ -64,8 +64,6 @@ void hmp_block_resize(Monitor *mon, const QDict *qdict); > void hmp_snapshot_blkdev(Monitor *mon, const QDict *qdict); > void hmp_snapshot_blkdev_internal(Monitor *mon, const QDict *qdict); > void hmp_snapshot_delete_blkdev_internal(Monitor *mon, const QDict *qdict); > -void hmp_drive_mirror(Monitor *mon, const QDict *qdict); > -void hmp_drive_backup(Monitor *mon, const QDict *qdict); > void hmp_loadvm(Monitor *mon, const QDict *qdict); > void hmp_savevm(Monitor *mon, const QDict *qdict); > void hmp_delvm(Monitor *mon, const QDict *qdict); > diff --git a/monitor/hmp-cmds.c b/monitor/hmp-cmds.c > index fb4c2fd2a8..06f0cb4bb9 100644 > --- a/monitor/hmp-cmds.c > +++ b/monitor/hmp-cmds.c > @@ -1342,64 +1342,6 @@ void hmp_block_resize(Monitor *mon, const QDict *qdict) > hmp_handle_error(mon, err); > } > > -void hmp_drive_mirror(Monitor *mon, const QDict *qdict) > -{ > - const char *filename = qdict_get_str(qdict, "target"); > - const char *format = qdict_get_try_str(qdict, "format"); > - bool reuse = qdict_get_try_bool(qdict, "reuse", false); > - bool full = qdict_get_try_bool(qdict, "full", false); > - Error *err = NULL; > - DriveMirror mirror = { > - .device = (char *)qdict_get_str(qdict, "device"), > - .target = (char *)filename, > - .has_format = !!format, > - .format = (char *)format, > - .sync = full ? MIRROR_SYNC_MODE_FULL : MIRROR_SYNC_MODE_TOP, > - .has_mode = true, > - .mode = reuse ? NEW_IMAGE_MODE_EXISTING : NEW_IMAGE_MODE_ABSOLUTE_PATHS, > - .unmap = true, > - }; > - > - if (!filename) { > - error_setg(&err, QERR_MISSING_PARAMETER, "target"); > - hmp_handle_error(mon, err); > - return; > - } > - qmp_drive_mirror(&mirror, &err); > - hmp_handle_error(mon, err); > -} > - > -void hmp_drive_backup(Monitor *mon, const QDict *qdict) > -{ > - const char *device = qdict_get_str(qdict, "device"); > - const char *filename = qdict_get_str(qdict, "target"); > - const char *format = qdict_get_try_str(qdict, "format"); > - bool reuse = qdict_get_try_bool(qdict, "reuse", false); > - bool full = qdict_get_try_bool(qdict, "full", false); > - bool compress = qdict_get_try_bool(qdict, "compress", false); > - Error *err = NULL; > - DriveBackup backup = { > - .device = (char *)device, > - .target = (char *)filename, > - .has_format = !!format, > - .format = (char *)format, > - .sync = full ? MIRROR_SYNC_MODE_FULL : MIRROR_SYNC_MODE_TOP, > - .has_mode = true, > - .mode = reuse ? NEW_IMAGE_MODE_EXISTING : NEW_IMAGE_MODE_ABSOLUTE_PATHS, > - .has_compress = !!compress, > - .compress = compress, > - }; > - > - if (!filename) { > - error_setg(&err, QERR_MISSING_PARAMETER, "target"); > - hmp_handle_error(mon, err); > - return; > - } > - > - qmp_drive_backup(&backup, &err); > - hmp_handle_error(mon, err); > -} > - > void hmp_snapshot_blkdev(Monitor *mon, const QDict *qdict) > { > const char *device = qdict_get_str(qdict, "device");
* Maxim Levitsky (mlevitsk@redhat.com) wrote: > > I see that I have the same issue of long subject line here. > Its because I forgot the space after first line, when adding this. > If I need to resend another version of this patchset I'll fix this, > but otherwise maybe that can be fixed when applying this to one of maintainer's > trees. > > Sorry for noise. I can just fix the commit message. Dave > Best regards, > Maxim Levitsky > > On Sun, 2020-03-08 at 11:24 +0200, Maxim Levitsky wrote: > > Signed-off-by: Maxim Levitsky <mlevitsk@redhat.com> > > Reviewed-by: Dr. David Alan Gilbert <dgilbert@redhat.com> > > --- > > block/monitor/block-hmp-cmds.c | 60 ++++++++++++++++++++++++++++++++++ > > include/block/block-hmp-cmds.h | 12 +++++-- > > include/monitor/hmp.h | 2 -- > > monitor/hmp-cmds.c | 58 -------------------------------- > > 4 files changed, 69 insertions(+), 63 deletions(-) > > > > diff --git a/block/monitor/block-hmp-cmds.c b/block/monitor/block-hmp-cmds.c > > index ad727a6b08..d6dd5d97f7 100644 > > --- a/block/monitor/block-hmp-cmds.c > > +++ b/block/monitor/block-hmp-cmds.c > > @@ -37,10 +37,12 @@ > > #include "qapi/qapi-commands-block.h" > > #include "qapi/qmp/qdict.h" > > #include "qapi/error.h" > > +#include "qapi/qmp/qerror.h" > > #include "qemu/config-file.h" > > #include "qemu/option.h" > > #include "sysemu/sysemu.h" > > #include "monitor/monitor.h" > > +#include "monitor/hmp.h" > > #include "block/block_int.h" > > #include "block/block-hmp-cmds.h" > > > > @@ -187,3 +189,61 @@ void hmp_commit(Monitor *mon, const QDict *qdict) > > error_report("'commit' error for '%s': %s", device, strerror(-ret)); > > } > > } > > + > > +void hmp_drive_mirror(Monitor *mon, const QDict *qdict) > > +{ > > + const char *filename = qdict_get_str(qdict, "target"); > > + const char *format = qdict_get_try_str(qdict, "format"); > > + bool reuse = qdict_get_try_bool(qdict, "reuse", false); > > + bool full = qdict_get_try_bool(qdict, "full", false); > > + Error *err = NULL; > > + DriveMirror mirror = { > > + .device = (char *)qdict_get_str(qdict, "device"), > > + .target = (char *)filename, > > + .has_format = !!format, > > + .format = (char *)format, > > + .sync = full ? MIRROR_SYNC_MODE_FULL : MIRROR_SYNC_MODE_TOP, > > + .has_mode = true, > > + .mode = reuse ? NEW_IMAGE_MODE_EXISTING : NEW_IMAGE_MODE_ABSOLUTE_PATHS, > > + .unmap = true, > > + }; > > + > > + if (!filename) { > > + error_setg(&err, QERR_MISSING_PARAMETER, "target"); > > + hmp_handle_error(mon, err); > > + return; > > + } > > + qmp_drive_mirror(&mirror, &err); > > + hmp_handle_error(mon, err); > > +} > > + > > +void hmp_drive_backup(Monitor *mon, const QDict *qdict) > > +{ > > + const char *device = qdict_get_str(qdict, "device"); > > + const char *filename = qdict_get_str(qdict, "target"); > > + const char *format = qdict_get_try_str(qdict, "format"); > > + bool reuse = qdict_get_try_bool(qdict, "reuse", false); > > + bool full = qdict_get_try_bool(qdict, "full", false); > > + bool compress = qdict_get_try_bool(qdict, "compress", false); > > + Error *err = NULL; > > + DriveBackup backup = { > > + .device = (char *)device, > > + .target = (char *)filename, > > + .has_format = !!format, > > + .format = (char *)format, > > + .sync = full ? MIRROR_SYNC_MODE_FULL : MIRROR_SYNC_MODE_TOP, > > + .has_mode = true, > > + .mode = reuse ? NEW_IMAGE_MODE_EXISTING : NEW_IMAGE_MODE_ABSOLUTE_PATHS, > > + .has_compress = !!compress, > > + .compress = compress, > > + }; > > + > > + if (!filename) { > > + error_setg(&err, QERR_MISSING_PARAMETER, "target"); > > + hmp_handle_error(mon, err); > > + return; > > + } > > + > > + qmp_drive_backup(&backup, &err); > > + hmp_handle_error(mon, err); > > +} > > diff --git a/include/block/block-hmp-cmds.h b/include/block/block-hmp-cmds.h > > index 30b0f56415..a64b737b3a 100644 > > --- a/include/block/block-hmp-cmds.h > > +++ b/include/block/block-hmp-cmds.h > > @@ -3,10 +3,13 @@ > > * > > * Copyright (c) 2003-2008 Fabrice Bellard > > * Copyright (c) 2020 Red Hat, Inc. > > + * Copyright IBM, Corp. 2011 > > * > > - * This work is licensed under the terms of the GNU GPL, version 2. > > - * or (at your option) any later version. > > - * See the COPYING file in the top-level directory. > > + * Authors: > > + * Anthony Liguori <aliguori@us.ibm.com> > > + * > > + * This work is licensed under the terms of the GNU GPL, version 2. See > > + * the COPYING file in the top-level directory. > > */ > > > > #ifndef BLOCK_HMP_COMMANDS_H > > @@ -17,4 +20,7 @@ void hmp_drive_add(Monitor *mon, const QDict *qdict); > > void hmp_commit(Monitor *mon, const QDict *qdict); > > void hmp_drive_del(Monitor *mon, const QDict *qdict); > > > > +void hmp_drive_mirror(Monitor *mon, const QDict *qdict); > > +void hmp_drive_backup(Monitor *mon, const QDict *qdict); > > + > > #endif > > diff --git a/include/monitor/hmp.h b/include/monitor/hmp.h > > index 3d329853b2..c1b363ee57 100644 > > --- a/include/monitor/hmp.h > > +++ b/include/monitor/hmp.h > > @@ -64,8 +64,6 @@ void hmp_block_resize(Monitor *mon, const QDict *qdict); > > void hmp_snapshot_blkdev(Monitor *mon, const QDict *qdict); > > void hmp_snapshot_blkdev_internal(Monitor *mon, const QDict *qdict); > > void hmp_snapshot_delete_blkdev_internal(Monitor *mon, const QDict *qdict); > > -void hmp_drive_mirror(Monitor *mon, const QDict *qdict); > > -void hmp_drive_backup(Monitor *mon, const QDict *qdict); > > void hmp_loadvm(Monitor *mon, const QDict *qdict); > > void hmp_savevm(Monitor *mon, const QDict *qdict); > > void hmp_delvm(Monitor *mon, const QDict *qdict); > > diff --git a/monitor/hmp-cmds.c b/monitor/hmp-cmds.c > > index fb4c2fd2a8..06f0cb4bb9 100644 > > --- a/monitor/hmp-cmds.c > > +++ b/monitor/hmp-cmds.c > > @@ -1342,64 +1342,6 @@ void hmp_block_resize(Monitor *mon, const QDict *qdict) > > hmp_handle_error(mon, err); > > } > > > > -void hmp_drive_mirror(Monitor *mon, const QDict *qdict) > > -{ > > - const char *filename = qdict_get_str(qdict, "target"); > > - const char *format = qdict_get_try_str(qdict, "format"); > > - bool reuse = qdict_get_try_bool(qdict, "reuse", false); > > - bool full = qdict_get_try_bool(qdict, "full", false); > > - Error *err = NULL; > > - DriveMirror mirror = { > > - .device = (char *)qdict_get_str(qdict, "device"), > > - .target = (char *)filename, > > - .has_format = !!format, > > - .format = (char *)format, > > - .sync = full ? MIRROR_SYNC_MODE_FULL : MIRROR_SYNC_MODE_TOP, > > - .has_mode = true, > > - .mode = reuse ? NEW_IMAGE_MODE_EXISTING : NEW_IMAGE_MODE_ABSOLUTE_PATHS, > > - .unmap = true, > > - }; > > - > > - if (!filename) { > > - error_setg(&err, QERR_MISSING_PARAMETER, "target"); > > - hmp_handle_error(mon, err); > > - return; > > - } > > - qmp_drive_mirror(&mirror, &err); > > - hmp_handle_error(mon, err); > > -} > > - > > -void hmp_drive_backup(Monitor *mon, const QDict *qdict) > > -{ > > - const char *device = qdict_get_str(qdict, "device"); > > - const char *filename = qdict_get_str(qdict, "target"); > > - const char *format = qdict_get_try_str(qdict, "format"); > > - bool reuse = qdict_get_try_bool(qdict, "reuse", false); > > - bool full = qdict_get_try_bool(qdict, "full", false); > > - bool compress = qdict_get_try_bool(qdict, "compress", false); > > - Error *err = NULL; > > - DriveBackup backup = { > > - .device = (char *)device, > > - .target = (char *)filename, > > - .has_format = !!format, > > - .format = (char *)format, > > - .sync = full ? MIRROR_SYNC_MODE_FULL : MIRROR_SYNC_MODE_TOP, > > - .has_mode = true, > > - .mode = reuse ? NEW_IMAGE_MODE_EXISTING : NEW_IMAGE_MODE_ABSOLUTE_PATHS, > > - .has_compress = !!compress, > > - .compress = compress, > > - }; > > - > > - if (!filename) { > > - error_setg(&err, QERR_MISSING_PARAMETER, "target"); > > - hmp_handle_error(mon, err); > > - return; > > - } > > - > > - qmp_drive_backup(&backup, &err); > > - hmp_handle_error(mon, err); > > -} > > - > > void hmp_snapshot_blkdev(Monitor *mon, const QDict *qdict) > > { > > const char *device = qdict_get_str(qdict, "device"); > > -- Dr. David Alan Gilbert / dgilbert@redhat.com / Manchester, UK
On Mon, 2020-03-09 at 16:31 +0000, Dr. David Alan Gilbert wrote: > * Maxim Levitsky (mlevitsk@redhat.com) wrote: > > > > I see that I have the same issue of long subject line here. > > Its because I forgot the space after first line, when adding this. > > If I need to resend another version of this patchset I'll fix this, > > but otherwise maybe that can be fixed when applying this to one of maintainer's > > trees. > > > > Sorry for noise. > > I can just fix the commit message. Thank you!! Best regards, Maxim Levitsky > > Dave > > > Best regards, > > Maxim Levitsky > > > > On Sun, 2020-03-08 at 11:24 +0200, Maxim Levitsky wrote: > > > Signed-off-by: Maxim Levitsky <mlevitsk@redhat.com> > > > Reviewed-by: Dr. David Alan Gilbert <dgilbert@redhat.com> > > > --- > > > block/monitor/block-hmp-cmds.c | 60 ++++++++++++++++++++++++++++++++++ > > > include/block/block-hmp-cmds.h | 12 +++++-- > > > include/monitor/hmp.h | 2 -- > > > monitor/hmp-cmds.c | 58 -------------------------------- > > > 4 files changed, 69 insertions(+), 63 deletions(-) > > > > > > diff --git a/block/monitor/block-hmp-cmds.c b/block/monitor/block-hmp-cmds.c > > > index ad727a6b08..d6dd5d97f7 100644 > > > --- a/block/monitor/block-hmp-cmds.c > > > +++ b/block/monitor/block-hmp-cmds.c > > > @@ -37,10 +37,12 @@ > > > #include "qapi/qapi-commands-block.h" > > > #include "qapi/qmp/qdict.h" > > > #include "qapi/error.h" > > > +#include "qapi/qmp/qerror.h" > > > #include "qemu/config-file.h" > > > #include "qemu/option.h" > > > #include "sysemu/sysemu.h" > > > #include "monitor/monitor.h" > > > +#include "monitor/hmp.h" > > > #include "block/block_int.h" > > > #include "block/block-hmp-cmds.h" > > > > > > @@ -187,3 +189,61 @@ void hmp_commit(Monitor *mon, const QDict *qdict) > > > error_report("'commit' error for '%s': %s", device, strerror(-ret)); > > > } > > > } > > > + > > > +void hmp_drive_mirror(Monitor *mon, const QDict *qdict) > > > +{ > > > + const char *filename = qdict_get_str(qdict, "target"); > > > + const char *format = qdict_get_try_str(qdict, "format"); > > > + bool reuse = qdict_get_try_bool(qdict, "reuse", false); > > > + bool full = qdict_get_try_bool(qdict, "full", false); > > > + Error *err = NULL; > > > + DriveMirror mirror = { > > > + .device = (char *)qdict_get_str(qdict, "device"), > > > + .target = (char *)filename, > > > + .has_format = !!format, > > > + .format = (char *)format, > > > + .sync = full ? MIRROR_SYNC_MODE_FULL : MIRROR_SYNC_MODE_TOP, > > > + .has_mode = true, > > > + .mode = reuse ? NEW_IMAGE_MODE_EXISTING : NEW_IMAGE_MODE_ABSOLUTE_PATHS, > > > + .unmap = true, > > > + }; > > > + > > > + if (!filename) { > > > + error_setg(&err, QERR_MISSING_PARAMETER, "target"); > > > + hmp_handle_error(mon, err); > > > + return; > > > + } > > > + qmp_drive_mirror(&mirror, &err); > > > + hmp_handle_error(mon, err); > > > +} > > > + > > > +void hmp_drive_backup(Monitor *mon, const QDict *qdict) > > > +{ > > > + const char *device = qdict_get_str(qdict, "device"); > > > + const char *filename = qdict_get_str(qdict, "target"); > > > + const char *format = qdict_get_try_str(qdict, "format"); > > > + bool reuse = qdict_get_try_bool(qdict, "reuse", false); > > > + bool full = qdict_get_try_bool(qdict, "full", false); > > > + bool compress = qdict_get_try_bool(qdict, "compress", false); > > > + Error *err = NULL; > > > + DriveBackup backup = { > > > + .device = (char *)device, > > > + .target = (char *)filename, > > > + .has_format = !!format, > > > + .format = (char *)format, > > > + .sync = full ? MIRROR_SYNC_MODE_FULL : MIRROR_SYNC_MODE_TOP, > > > + .has_mode = true, > > > + .mode = reuse ? NEW_IMAGE_MODE_EXISTING : NEW_IMAGE_MODE_ABSOLUTE_PATHS, > > > + .has_compress = !!compress, > > > + .compress = compress, > > > + }; > > > + > > > + if (!filename) { > > > + error_setg(&err, QERR_MISSING_PARAMETER, "target"); > > > + hmp_handle_error(mon, err); > > > + return; > > > + } > > > + > > > + qmp_drive_backup(&backup, &err); > > > + hmp_handle_error(mon, err); > > > +} > > > diff --git a/include/block/block-hmp-cmds.h b/include/block/block-hmp-cmds.h > > > index 30b0f56415..a64b737b3a 100644 > > > --- a/include/block/block-hmp-cmds.h > > > +++ b/include/block/block-hmp-cmds.h > > > @@ -3,10 +3,13 @@ > > > * > > > * Copyright (c) 2003-2008 Fabrice Bellard > > > * Copyright (c) 2020 Red Hat, Inc. > > > + * Copyright IBM, Corp. 2011 > > > * > > > - * This work is licensed under the terms of the GNU GPL, version 2. > > > - * or (at your option) any later version. > > > - * See the COPYING file in the top-level directory. > > > + * Authors: > > > + * Anthony Liguori <aliguori@us.ibm.com> > > > + * > > > + * This work is licensed under the terms of the GNU GPL, version 2. See > > > + * the COPYING file in the top-level directory. > > > */ > > > > > > #ifndef BLOCK_HMP_COMMANDS_H > > > @@ -17,4 +20,7 @@ void hmp_drive_add(Monitor *mon, const QDict *qdict); > > > void hmp_commit(Monitor *mon, const QDict *qdict); > > > void hmp_drive_del(Monitor *mon, const QDict *qdict); > > > > > > +void hmp_drive_mirror(Monitor *mon, const QDict *qdict); > > > +void hmp_drive_backup(Monitor *mon, const QDict *qdict); > > > + > > > #endif > > > diff --git a/include/monitor/hmp.h b/include/monitor/hmp.h > > > index 3d329853b2..c1b363ee57 100644 > > > --- a/include/monitor/hmp.h > > > +++ b/include/monitor/hmp.h > > > @@ -64,8 +64,6 @@ void hmp_block_resize(Monitor *mon, const QDict *qdict); > > > void hmp_snapshot_blkdev(Monitor *mon, const QDict *qdict); > > > void hmp_snapshot_blkdev_internal(Monitor *mon, const QDict *qdict); > > > void hmp_snapshot_delete_blkdev_internal(Monitor *mon, const QDict *qdict); > > > -void hmp_drive_mirror(Monitor *mon, const QDict *qdict); > > > -void hmp_drive_backup(Monitor *mon, const QDict *qdict); > > > void hmp_loadvm(Monitor *mon, const QDict *qdict); > > > void hmp_savevm(Monitor *mon, const QDict *qdict); > > > void hmp_delvm(Monitor *mon, const QDict *qdict); > > > diff --git a/monitor/hmp-cmds.c b/monitor/hmp-cmds.c > > > index fb4c2fd2a8..06f0cb4bb9 100644 > > > --- a/monitor/hmp-cmds.c > > > +++ b/monitor/hmp-cmds.c > > > @@ -1342,64 +1342,6 @@ void hmp_block_resize(Monitor *mon, const QDict *qdict) > > > hmp_handle_error(mon, err); > > > } > > > > > > -void hmp_drive_mirror(Monitor *mon, const QDict *qdict) > > > -{ > > > - const char *filename = qdict_get_str(qdict, "target"); > > > - const char *format = qdict_get_try_str(qdict, "format"); > > > - bool reuse = qdict_get_try_bool(qdict, "reuse", false); > > > - bool full = qdict_get_try_bool(qdict, "full", false); > > > - Error *err = NULL; > > > - DriveMirror mirror = { > > > - .device = (char *)qdict_get_str(qdict, "device"), > > > - .target = (char *)filename, > > > - .has_format = !!format, > > > - .format = (char *)format, > > > - .sync = full ? MIRROR_SYNC_MODE_FULL : MIRROR_SYNC_MODE_TOP, > > > - .has_mode = true, > > > - .mode = reuse ? NEW_IMAGE_MODE_EXISTING : NEW_IMAGE_MODE_ABSOLUTE_PATHS, > > > - .unmap = true, > > > - }; > > > - > > > - if (!filename) { > > > - error_setg(&err, QERR_MISSING_PARAMETER, "target"); > > > - hmp_handle_error(mon, err); > > > - return; > > > - } > > > - qmp_drive_mirror(&mirror, &err); > > > - hmp_handle_error(mon, err); > > > -} > > > - > > > -void hmp_drive_backup(Monitor *mon, const QDict *qdict) > > > -{ > > > - const char *device = qdict_get_str(qdict, "device"); > > > - const char *filename = qdict_get_str(qdict, "target"); > > > - const char *format = qdict_get_try_str(qdict, "format"); > > > - bool reuse = qdict_get_try_bool(qdict, "reuse", false); > > > - bool full = qdict_get_try_bool(qdict, "full", false); > > > - bool compress = qdict_get_try_bool(qdict, "compress", false); > > > - Error *err = NULL; > > > - DriveBackup backup = { > > > - .device = (char *)device, > > > - .target = (char *)filename, > > > - .has_format = !!format, > > > - .format = (char *)format, > > > - .sync = full ? MIRROR_SYNC_MODE_FULL : MIRROR_SYNC_MODE_TOP, > > > - .has_mode = true, > > > - .mode = reuse ? NEW_IMAGE_MODE_EXISTING : NEW_IMAGE_MODE_ABSOLUTE_PATHS, > > > - .has_compress = !!compress, > > > - .compress = compress, > > > - }; > > > - > > > - if (!filename) { > > > - error_setg(&err, QERR_MISSING_PARAMETER, "target"); > > > - hmp_handle_error(mon, err); > > > - return; > > > - } > > > - > > > - qmp_drive_backup(&backup, &err); > > > - hmp_handle_error(mon, err); > > > -} > > > - > > > void hmp_snapshot_blkdev(Monitor *mon, const QDict *qdict) > > > { > > > const char *device = qdict_get_str(qdict, "device"); > > > > > > -- > Dr. David Alan Gilbert / dgilbert@redhat.com / Manchester, UK
diff --git a/block/monitor/block-hmp-cmds.c b/block/monitor/block-hmp-cmds.c index ad727a6b08..d6dd5d97f7 100644 --- a/block/monitor/block-hmp-cmds.c +++ b/block/monitor/block-hmp-cmds.c @@ -37,10 +37,12 @@ #include "qapi/qapi-commands-block.h" #include "qapi/qmp/qdict.h" #include "qapi/error.h" +#include "qapi/qmp/qerror.h" #include "qemu/config-file.h" #include "qemu/option.h" #include "sysemu/sysemu.h" #include "monitor/monitor.h" +#include "monitor/hmp.h" #include "block/block_int.h" #include "block/block-hmp-cmds.h" @@ -187,3 +189,61 @@ void hmp_commit(Monitor *mon, const QDict *qdict) error_report("'commit' error for '%s': %s", device, strerror(-ret)); } } + +void hmp_drive_mirror(Monitor *mon, const QDict *qdict) +{ + const char *filename = qdict_get_str(qdict, "target"); + const char *format = qdict_get_try_str(qdict, "format"); + bool reuse = qdict_get_try_bool(qdict, "reuse", false); + bool full = qdict_get_try_bool(qdict, "full", false); + Error *err = NULL; + DriveMirror mirror = { + .device = (char *)qdict_get_str(qdict, "device"), + .target = (char *)filename, + .has_format = !!format, + .format = (char *)format, + .sync = full ? MIRROR_SYNC_MODE_FULL : MIRROR_SYNC_MODE_TOP, + .has_mode = true, + .mode = reuse ? NEW_IMAGE_MODE_EXISTING : NEW_IMAGE_MODE_ABSOLUTE_PATHS, + .unmap = true, + }; + + if (!filename) { + error_setg(&err, QERR_MISSING_PARAMETER, "target"); + hmp_handle_error(mon, err); + return; + } + qmp_drive_mirror(&mirror, &err); + hmp_handle_error(mon, err); +} + +void hmp_drive_backup(Monitor *mon, const QDict *qdict) +{ + const char *device = qdict_get_str(qdict, "device"); + const char *filename = qdict_get_str(qdict, "target"); + const char *format = qdict_get_try_str(qdict, "format"); + bool reuse = qdict_get_try_bool(qdict, "reuse", false); + bool full = qdict_get_try_bool(qdict, "full", false); + bool compress = qdict_get_try_bool(qdict, "compress", false); + Error *err = NULL; + DriveBackup backup = { + .device = (char *)device, + .target = (char *)filename, + .has_format = !!format, + .format = (char *)format, + .sync = full ? MIRROR_SYNC_MODE_FULL : MIRROR_SYNC_MODE_TOP, + .has_mode = true, + .mode = reuse ? NEW_IMAGE_MODE_EXISTING : NEW_IMAGE_MODE_ABSOLUTE_PATHS, + .has_compress = !!compress, + .compress = compress, + }; + + if (!filename) { + error_setg(&err, QERR_MISSING_PARAMETER, "target"); + hmp_handle_error(mon, err); + return; + } + + qmp_drive_backup(&backup, &err); + hmp_handle_error(mon, err); +} diff --git a/include/block/block-hmp-cmds.h b/include/block/block-hmp-cmds.h index 30b0f56415..a64b737b3a 100644 --- a/include/block/block-hmp-cmds.h +++ b/include/block/block-hmp-cmds.h @@ -3,10 +3,13 @@ * * Copyright (c) 2003-2008 Fabrice Bellard * Copyright (c) 2020 Red Hat, Inc. + * Copyright IBM, Corp. 2011 * - * This work is licensed under the terms of the GNU GPL, version 2. - * or (at your option) any later version. - * See the COPYING file in the top-level directory. + * Authors: + * Anthony Liguori <aliguori@us.ibm.com> + * + * This work is licensed under the terms of the GNU GPL, version 2. See + * the COPYING file in the top-level directory. */ #ifndef BLOCK_HMP_COMMANDS_H @@ -17,4 +20,7 @@ void hmp_drive_add(Monitor *mon, const QDict *qdict); void hmp_commit(Monitor *mon, const QDict *qdict); void hmp_drive_del(Monitor *mon, const QDict *qdict); +void hmp_drive_mirror(Monitor *mon, const QDict *qdict); +void hmp_drive_backup(Monitor *mon, const QDict *qdict); + #endif diff --git a/include/monitor/hmp.h b/include/monitor/hmp.h index 3d329853b2..c1b363ee57 100644 --- a/include/monitor/hmp.h +++ b/include/monitor/hmp.h @@ -64,8 +64,6 @@ void hmp_block_resize(Monitor *mon, const QDict *qdict); void hmp_snapshot_blkdev(Monitor *mon, const QDict *qdict); void hmp_snapshot_blkdev_internal(Monitor *mon, const QDict *qdict); void hmp_snapshot_delete_blkdev_internal(Monitor *mon, const QDict *qdict); -void hmp_drive_mirror(Monitor *mon, const QDict *qdict); -void hmp_drive_backup(Monitor *mon, const QDict *qdict); void hmp_loadvm(Monitor *mon, const QDict *qdict); void hmp_savevm(Monitor *mon, const QDict *qdict); void hmp_delvm(Monitor *mon, const QDict *qdict); diff --git a/monitor/hmp-cmds.c b/monitor/hmp-cmds.c index fb4c2fd2a8..06f0cb4bb9 100644 --- a/monitor/hmp-cmds.c +++ b/monitor/hmp-cmds.c @@ -1342,64 +1342,6 @@ void hmp_block_resize(Monitor *mon, const QDict *qdict) hmp_handle_error(mon, err); } -void hmp_drive_mirror(Monitor *mon, const QDict *qdict) -{ - const char *filename = qdict_get_str(qdict, "target"); - const char *format = qdict_get_try_str(qdict, "format"); - bool reuse = qdict_get_try_bool(qdict, "reuse", false); - bool full = qdict_get_try_bool(qdict, "full", false); - Error *err = NULL; - DriveMirror mirror = { - .device = (char *)qdict_get_str(qdict, "device"), - .target = (char *)filename, - .has_format = !!format, - .format = (char *)format, - .sync = full ? MIRROR_SYNC_MODE_FULL : MIRROR_SYNC_MODE_TOP, - .has_mode = true, - .mode = reuse ? NEW_IMAGE_MODE_EXISTING : NEW_IMAGE_MODE_ABSOLUTE_PATHS, - .unmap = true, - }; - - if (!filename) { - error_setg(&err, QERR_MISSING_PARAMETER, "target"); - hmp_handle_error(mon, err); - return; - } - qmp_drive_mirror(&mirror, &err); - hmp_handle_error(mon, err); -} - -void hmp_drive_backup(Monitor *mon, const QDict *qdict) -{ - const char *device = qdict_get_str(qdict, "device"); - const char *filename = qdict_get_str(qdict, "target"); - const char *format = qdict_get_try_str(qdict, "format"); - bool reuse = qdict_get_try_bool(qdict, "reuse", false); - bool full = qdict_get_try_bool(qdict, "full", false); - bool compress = qdict_get_try_bool(qdict, "compress", false); - Error *err = NULL; - DriveBackup backup = { - .device = (char *)device, - .target = (char *)filename, - .has_format = !!format, - .format = (char *)format, - .sync = full ? MIRROR_SYNC_MODE_FULL : MIRROR_SYNC_MODE_TOP, - .has_mode = true, - .mode = reuse ? NEW_IMAGE_MODE_EXISTING : NEW_IMAGE_MODE_ABSOLUTE_PATHS, - .has_compress = !!compress, - .compress = compress, - }; - - if (!filename) { - error_setg(&err, QERR_MISSING_PARAMETER, "target"); - hmp_handle_error(mon, err); - return; - } - - qmp_drive_backup(&backup, &err); - hmp_handle_error(mon, err); -} - void hmp_snapshot_blkdev(Monitor *mon, const QDict *qdict) { const char *device = qdict_get_str(qdict, "device");