The previous patch removed all snapshots, but not the directory
where the snapshots lived, which is still a form of stale data.
* src/qemu/qemu_domain.c (qemuDomainRemoveInactive): Wipe any
snapshot directory.
---
I could probably also just squash this into 2/3.
src/qemu/qemu_domain.c | 12 +++++++++++-
1 files changed, 11 insertions(+), 1 deletions(-)
diff --git a/src/qemu/qemu_domain.c b/src/qemu/qemu_domain.c
index 9436245..4023648 100644
--- a/src/qemu/qemu_domain.c
+++ b/src/qemu/qemu_domain.c
@@ -1537,7 +1537,6 @@ qemuDomainSnapshotDiscardAllMetadata(struct qemud_driver *driver,
rem.err = 0;
virHashForEach(vm->snapshots.objs, qemuDomainSnapshotDiscardAll, &rem);
- /* XXX also do rmdir ? */
return rem.err;
}
@@ -1549,10 +1548,21 @@ void
qemuDomainRemoveInactive(struct qemud_driver *driver,
virDomainObjPtr vm)
{
+ char *snapDir;
+
/* Remove any snapshot metadata prior to removing the domain */
if (qemuDomainSnapshotDiscardAllMetadata(driver, vm) < 0) {
VIR_WARN("unable to remove all snapshots for domain %s",
vm->def->name);
}
+ else if (virAsprintf(&snapDir, "%s/%s", driver->snapshotDir,
+ vm->def->name) < 0) {
+ VIR_WARN("unable to remove snapshot directory %s/%s",
+ driver->snapshotDir, vm->def->name);
+ } else {
+ if (rmdir(snapDir) < 0 && errno != ENOENT)
+ VIR_WARN("unable to remove snapshot directory %s", snapDir);
+ VIR_FREE(snapDir);
+ }
virDomainRemoveInactive(&driver->domains, vm);
}
--
1.7.4.4