From: Zhang Haoyu <zhan...@sangfor.com> The while loop variabal is "bs1", but "bs" is always passed to bdrv_snapshot_delete_by_id_or_name. Broken in commit a89d89d, v1.7.0.
Signed-off-by: Zhang Haoyu <zhan...@sangfor.com> Reviewed-by: Markus Armbruster <arm...@redhat.com> Signed-off-by: Stefan Hajnoczi <stefa...@redhat.com> (cherry picked from commit af957387547b05ed6dc4d84c10cca42700a7aeda) Signed-off-by: Michael Roth <mdr...@linux.vnet.ibm.com> --- savevm.c | 11 +++++------ 1 file changed, 5 insertions(+), 6 deletions(-) diff --git a/savevm.c b/savevm.c index e19ae0a..2d8eb96 100644 --- a/savevm.c +++ b/savevm.c @@ -1245,19 +1245,18 @@ int load_vmstate(const char *name) void do_delvm(Monitor *mon, const QDict *qdict) { - BlockDriverState *bs, *bs1; + BlockDriverState *bs; Error *err = NULL; const char *name = qdict_get_str(qdict, "name"); - bs = find_vmstate_bs(); - if (!bs) { + if (!find_vmstate_bs()) { monitor_printf(mon, "No block device supports snapshots\n"); return; } - bs1 = NULL; - while ((bs1 = bdrv_next(bs1))) { - if (bdrv_can_snapshot(bs1)) { + bs = NULL; + while ((bs = bdrv_next(bs))) { + if (bdrv_can_snapshot(bs)) { bdrv_snapshot_delete_by_id_or_name(bs, name, &err); if (err) { monitor_printf(mon, -- 1.9.1