Part of a series of cleanups to use new accessor methods. Several places in domain_conf.c still open-code raw field access, but that code will be touched later with the diskDef struct split so I'm avoiding churn here. * src/conf/domain_audit.c (virDomainAuditStart): Use accessors. * src/conf/domain_conf.c (virDomainDiskIndexByName) (virDomainDiskPathByName, virDomainDiskDefForeachPath) (virDomainDiskSourceIsBlockType): Likewise. * src/conf/snapshot_conf.c (virDomainSnapshotAlignDisks): Likewise. Signed-off-by: Eric Blake <eblake@xxxxxxxxxx> --- src/conf/domain_audit.c | 7 ++++--- src/conf/domain_conf.c | 20 +++++++++++--------- src/conf/snapshot_conf.c | 2 +- 3 files changed, 16 insertions(+), 13 deletions(-) diff --git a/src/conf/domain_audit.c b/src/conf/domain_audit.c index 69632b0..e8bd460 100644 --- a/src/conf/domain_audit.c +++ b/src/conf/domain_audit.c @@ -799,9 +799,10 @@ virDomainAuditStart(virDomainObjPtr vm, const char *reason, bool success) size_t i; for (i = 0; i < vm->def->ndisks; i++) { - virDomainDiskDefPtr disk = vm->def->disks[i]; - if (disk->src) /* Skips CDROM without media initially inserted */ - virDomainAuditDisk(vm, NULL, disk->src, "start", true); + const char *src = virDomainDiskGetSource(vm->def->disks[i]); + + if (src) /* Skips CDROM without media initially inserted */ + virDomainAuditDisk(vm, NULL, src, "start", true); } for (i = 0; i < vm->def->nfss; i++) { diff --git a/src/conf/domain_conf.c b/src/conf/domain_conf.c index d2724ca..a0e07c7 100644 --- a/src/conf/domain_conf.c +++ b/src/conf/domain_conf.c @@ -10233,8 +10233,7 @@ virDomainDiskIndexByName(virDomainDefPtr def, const char *name, if (*name != '/') { if (STREQ(vdisk->dst, name)) return i; - } else if (vdisk->src && - STREQ(vdisk->src, name)) { + } else if (STREQ_NULLABLE(virDomainDiskGetSource(vdisk), name)) { if (allow_ambiguous) return i; if (candidate >= 0) @@ -10253,7 +10252,7 @@ virDomainDiskPathByName(virDomainDefPtr def, const char *name) { int idx = virDomainDiskIndexByName(def, name, true); - return idx < 0 ? NULL : def->disks[idx]->src; + return idx < 0 ? NULL : virDomainDiskGetSource(def->disks[idx]); } int virDomainDiskInsert(virDomainDefPtr def, @@ -18532,14 +18531,16 @@ virDomainDiskDefForeachPath(virDomainDiskDefPtr disk, int ret = -1; size_t depth = 0; virStorageFileMetadata *tmp; + const char *path = virDomainDiskGetSource(disk); + int type = virDomainDiskGetType(disk); - if (!disk->src || disk->type == VIR_DOMAIN_DISK_TYPE_NETWORK || - (disk->type == VIR_DOMAIN_DISK_TYPE_VOLUME && + if (!path || type == VIR_DOMAIN_DISK_TYPE_NETWORK || + (type == VIR_DOMAIN_DISK_TYPE_VOLUME && disk->srcpool && disk->srcpool->mode == VIR_DOMAIN_DISK_SOURCE_POOL_MODE_DIRECT)) return 0; - if (iter(disk, disk->src, 0, opaque) < 0) + if (iter(disk, path, 0, opaque) < 0) goto cleanup; tmp = disk->backingChain; @@ -19409,16 +19410,17 @@ virDomainDiskSourceIsBlockType(virDomainDiskDefPtr def) /* No reason to think the disk source is block type if * the source is empty */ - if (!def->src) + if (!virDomainDiskGetSource(def)) return false; - if (def->type == VIR_DOMAIN_DISK_TYPE_BLOCK) + if (virDomainDiskGetType(def) == VIR_DOMAIN_DISK_TYPE_BLOCK) return true; /* For volume types, check the srcpool. * If it's a block type source pool, then it's possible */ - if (def->type == VIR_DOMAIN_DISK_TYPE_VOLUME && def->srcpool && + if (virDomainDiskGetType(def) == VIR_DOMAIN_DISK_TYPE_VOLUME && + def->srcpool && def->srcpool->voltype == VIR_STORAGE_VOL_BLOCK) { /* We don't think the volume accessed by remote URI is * block type source, since we can't/shouldn't manage it diff --git a/src/conf/snapshot_conf.c b/src/conf/snapshot_conf.c index 6fa14ed..0509743 100644 --- a/src/conf/snapshot_conf.c +++ b/src/conf/snapshot_conf.c @@ -558,7 +558,7 @@ virDomainSnapshotAlignDisks(virDomainSnapshotDefPtr def, if (disk->snapshot == VIR_DOMAIN_SNAPSHOT_LOCATION_EXTERNAL && !disk->file) { - const char *original = def->dom->disks[i]->src; + const char *original = virDomainDiskGetSource(def->dom->disks[i]); const char *tmp; struct stat sb; -- 1.8.5.3 -- libvir-list mailing list libvir-list@xxxxxxxxxx https://www.redhat.com/mailman/listinfo/libvir-list