[libvirt] [PATCH 02/18] conf: use disk source accessors in conf/

Eric Blake eblake at redhat.com
Wed Mar 19 17:20:34 UTC 2014


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 at redhat.com>
---
 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




More information about the libvir-list mailing list