]> xenbits.xensource.com Git - libvirt.git/commitdiff
snapshot: also delete empty directory
authorEric Blake <eblake@redhat.com>
Wed, 21 Sep 2011 22:08:42 +0000 (16:08 -0600)
committerDaniel Veillard <veillard@redhat.com>
Thu, 22 Sep 2011 06:02:44 +0000 (14:02 +0800)
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.

src/qemu/qemu_domain.c

index 9436245d867c749a900a01bd37aec63bc774de35..402364818996d6bff98bb2b7a5a24661a999f687 100644 (file)
@@ -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);
 }