Message ID | 1473099234-10882-37-git-send-email-kwolf@redhat.com (mailing list archive) |
---|---|
State | New, archived |
Headers | show |
On 05/09/2016 20:13, Kevin Wolf wrote: > When using a node name, create a temporary BlockBackend that is used to > run the qemu-io command. > > Signed-off-by: Kevin Wolf <kwolf@redhat.com> > Reviewed-by: Eric Blake <eblake@redhat.com> > --- > hmp.c | 13 +++++++++++++ > 1 file changed, 13 insertions(+) > > diff --git a/hmp.c b/hmp.c > index a7dfe6f..ad33b44 100644 > --- a/hmp.c > +++ b/hmp.c > @@ -1923,11 +1923,22 @@ void hmp_chardev_remove(Monitor *mon, const QDict *qdict) > void hmp_qemu_io(Monitor *mon, const QDict *qdict) > { > BlockBackend *blk; > + BlockBackend *local_blk = NULL; > const char* device = qdict_get_str(qdict, "device"); > const char* command = qdict_get_str(qdict, "command"); > Error *err = NULL; > > blk = blk_by_name(device); > + if (!blk) { > + BlockDriverState *bs = bdrv_lookup_bs(NULL, device, &err); > + if (bs) { > + blk = local_blk = blk_new(); > + blk_insert_bs(blk, bs); > + } else { > + goto fail; > + } > + } > + > if (blk) { Coverity notes that this "if" is now always taken. Thanks, Paolo > AioContext *aio_context = blk_get_aio_context(blk); > aio_context_acquire(aio_context); > @@ -1940,6 +1951,8 @@ void hmp_qemu_io(Monitor *mon, const QDict *qdict) > "Device '%s' not found", device); > } > > +fail: > + blk_unref(local_blk); > hmp_handle_error(mon, &err); > } > >
diff --git a/hmp.c b/hmp.c index a7dfe6f..ad33b44 100644 --- a/hmp.c +++ b/hmp.c @@ -1923,11 +1923,22 @@ void hmp_chardev_remove(Monitor *mon, const QDict *qdict) void hmp_qemu_io(Monitor *mon, const QDict *qdict) { BlockBackend *blk; + BlockBackend *local_blk = NULL; const char* device = qdict_get_str(qdict, "device"); const char* command = qdict_get_str(qdict, "command"); Error *err = NULL; blk = blk_by_name(device); + if (!blk) { + BlockDriverState *bs = bdrv_lookup_bs(NULL, device, &err); + if (bs) { + blk = local_blk = blk_new(); + blk_insert_bs(blk, bs); + } else { + goto fail; + } + } + if (blk) { AioContext *aio_context = blk_get_aio_context(blk); aio_context_acquire(aio_context); @@ -1940,6 +1951,8 @@ void hmp_qemu_io(Monitor *mon, const QDict *qdict) "Device '%s' not found", device); } +fail: + blk_unref(local_blk); hmp_handle_error(mon, &err); }