This commit fixes the bug #1396497. You can create multiple snapshots with the same name using 'qemu-img'. When you want to delete someone passing the name, it will remove the first occurence of the snapshot with that name. This commit fixes it.
Before: $ qemu-img snapshot -c foo debian.qcow2 $ qemu-img snapshot -c foo debian.qcow2 $ qemu-img snapshot -c foo debian.qcow2 $ qemu-img snapshot -l debian.qcow2 ID TAG VM SIZE DATE VM CLOCK 1 foo 220M 2015-01-21 16:22:41 00:02:50.862 2 foo 130M 2015-01-22 11:14:55 00:00:40.132 3 foo 65M 2015-01-22 11:16:32 00:01:13.414 Now: $ qemu-img snapshot -c foo debian.qcow2 $ qemu-img snapshot -c foo debian.qcow2 qemu-img: Could not create snapshot 'foo': -17 (File exists) $ qemu-img snapshot -l debian.qcow2 ID TAG VM SIZE DATE VM CLOCK 1 foo 220M 2015-01-21 16:22:41 00:02:50.862 Signed-off-by: Julio Faracco <jcfara...@gmail.com> --- block/qcow2-snapshot.c | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/block/qcow2-snapshot.c b/block/qcow2-snapshot.c index c7d4cfe..873ac49 100644 --- a/block/qcow2-snapshot.c +++ b/block/qcow2-snapshot.c @@ -356,8 +356,9 @@ int qcow2_snapshot_create(BlockDriverState *bs, QEMUSnapshotInfo *sn_info) find_new_snapshot_id(bs, sn_info->id_str, sizeof(sn_info->id_str)); } - /* Check that the ID is unique */ - if (find_snapshot_by_id_or_name(bs, sn_info->id_str) >= 0) { + /* Check that the ID and Name is unique */ + if (find_snapshot_by_id_or_name(bs, sn_info->id_str) >= 0 || + find_snapshot_by_id_or_name(bs, sn_info->name) >= 0 ) { return -EEXIST; } -- 1.9.1