[libvirt] [PATCH 35/26] snapshot: also support disks by path
Eric Blake
eblake at redhat.com
Tue Aug 23 20:14:56 UTC 2011
On 08/19/2011 09:08 PM, Eric Blake wrote:
> I got confused when 'virsh domblkinfo dom disk' required the
> path to a disk (which can be ambiguous, since a single file
> can back multiple disks), rather than the unambiguous target
> device name that I was using in disk snapshots. So, in true
> developer fashion, I went for the best of both worlds - all
> interfaces that operate on a disk (aka block) now accept
> either the target name or the unambiguous path to the backing
> file used by the disk.
>
> @@ -11284,6 +11312,13 @@ virDomainSnapshotAlignDisks(virDomainSnapshotDefPtr def,
> disk->file, disk->name);
> goto cleanup;
> }
> + if (STRNEQ(disk->file, def->dom->disks[idx]->dst)) {
> + VIR_FREE(disk->file);
> + if (!(disk->file = strdup(def->dom->disks[idx]->dst))) {
> + virReportOOMError();
> + goto cleanup;
> + }
> + }
I got a NULL deref in testing, and traced it to the use of the wrong
field. Squash this in (I promise to post a clean v3 of the entire
series once I flush out more of these little fixups).
diff --git i/src/conf/domain_conf.c w/src/conf/domain_conf.c
index aa5f2d3..effc2a3 100644
--- i/src/conf/domain_conf.c
+++ w/src/conf/domain_conf.c
@@ -11314,9 +11314,9 @@
virDomainSnapshotAlignDisks(virDomainSnapshotDefPtr def,
disk->file, disk->name);
goto cleanup;
}
- if (STRNEQ(disk->file, def->dom->disks[idx]->dst)) {
- VIR_FREE(disk->file);
- if (!(disk->file = strdup(def->dom->disks[idx]->dst))) {
+ if (STRNEQ(disk->name, def->dom->disks[idx]->dst)) {
+ VIR_FREE(disk->name);
+ if (!(disk->name = strdup(def->dom->disks[idx]->dst))) {
virReportOOMError();
goto cleanup;
}
--
Eric Blake eblake at redhat.com +1-801-349-2682
Libvirt virtualization library http://libvirt.org
More information about the libvir-list
mailing list