From: Eric Blake Date: Wed, 21 Sep 2011 22:08:42 +0000 (-0600) Subject: snapshot: also delete empty directory X-Git-Tag: v0.9.6~1 X-Git-Url: http://git.ipfire.org/?a=commitdiff_plain;h=61dbee0efd72282322c0653a11a73323d1ca3822;p=thirdparty%2Flibvirt.git snapshot: also delete empty directory 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. --- diff --git a/src/qemu/qemu_domain.c b/src/qemu/qemu_domain.c index 9436245d86..4023648189 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); }