Re: [PATCH 1/7] conf: Move -virDomainDiskDefForeachPath to virt-aa-helper

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



On 10/8/19 6:22 PM, Cole Robinson wrote:
It is the only user. Rename it to match the local style

Signed-off-by: Cole Robinson <crobinso@xxxxxxxxxx>
---
  src/conf/domain_conf.c        | 42 -----------------------------
  src/conf/domain_conf.h        | 10 -------
  src/libvirt_private.syms      |  1 -
  src/security/virt-aa-helper.c | 50 ++++++++++++++++++++++++++++++++++-
  4 files changed, 49 insertions(+), 54 deletions(-)



diff --git a/src/security/virt-aa-helper.c b/src/security/virt-aa-helper.c
index 5853ad985f..6e358ff5b6 100644
--- a/src/security/virt-aa-helper.c
+++ b/src/security/virt-aa-helper.c
@@ -934,6 +934,54 @@ add_file_path(virDomainDiskDefPtr disk,
      return ret;
  }
+
+typedef int (*disk_foreach_iterator)(virDomainDiskDefPtr disk,
+                                     const char *path,
+                                     size_t depth,
+                                     void *opaque);
+
+
+/* Call iter(disk, name, depth, opaque) for each element of disk and
+ * its backing chain in the pre-populated disk->src.backingStore.
+ * ignoreOpenFailure determines whether to warn about a chain that
+ * mentions a backing file without also having metadata on that
+ * file.  */
+static int
+disk_foreach_path(virDomainDiskDefPtr disk,
+                  bool ignoreOpenFailure,
+                  disk_foreach_iterator iter,
+                  void *opaque)
+{
+    size_t depth = 0;
+    virStorageSourcePtr tmp;
+    VIR_AUTOFREE(char *) brokenRaw = NULL;
+
+    if (!ignoreOpenFailure) {
+        if (virStorageFileChainGetBroken(disk->src, &brokenRaw) < 0)
+            return -1;
+
+        if (brokenRaw) {
+            virReportError(VIR_ERR_INTERNAL_ERROR,
+                           _("unable to visit backing chain file %s"),
+                           brokenRaw);
+            return -1;
+        }
+    }
+
+    for (tmp = disk->src; virStorageSourceIsBacking(tmp); tmp = tmp->backingStore) {
+        /* execute the callback only for local storage */
+        if (virStorageSourceIsLocalStorage(tmp) &&
+            tmp->path) {
+            if (iter(disk, tmp->path, depth, opaque) < 0)
+                return -1;
+        }
+
+        depth++;
+    }
+
+    return 0;
+}
+
  static int
  get_files(vahControl * ctl)
  {
@@ -977,7 +1025,7 @@ get_files(vahControl * ctl)
           * be passing ignoreOpenFailure = false and handle open errors more
           * careful than just ignoring them.

There's one occurrence of virDomainDiskDefForeachPath in this comment ^^^

           */
-        if (virDomainDiskDefForeachPath(disk, true, add_file_path, &buf) < 0)
+        if (disk_foreach_path(disk, true, add_file_path, &buf) < 0)
              goto cleanup;
      }


Michal

--
libvir-list mailing list
libvir-list@xxxxxxxxxx
https://www.redhat.com/mailman/listinfo/libvir-list



[Index of Archives]     [Virt Tools]     [Libvirt Users]     [Lib OS Info]     [Fedora Users]     [Fedora Desktop]     [Fedora SELinux]     [Big List of Linux Books]     [Yosemite News]     [KDE Users]     [Fedora Tools]

  Powered by Linux