[libvirt] [PATCHv3 06/36] storage: backend: Add possibility to suppress errors from backend lookup

Peter Krempa pkrempa at redhat.com
Fri May 30 08:37:28 UTC 2014


Add a new function wrapper and tweak the storage file backend lookup
function so that it can be used without reporting error. This will be
useful in the metadata crawler code where we need silently break if
metadata retrieval is not supported for the current storage type.
---

Notes:
    Version 3:
    - ACKed by Eric

 src/storage/storage_backend.c | 16 ++++++++++++++--
 src/storage/storage_backend.h |  4 +++-
 2 files changed, 17 insertions(+), 3 deletions(-)

diff --git a/src/storage/storage_backend.c b/src/storage/storage_backend.c
index e016cc8..380ca58 100644
--- a/src/storage/storage_backend.c
+++ b/src/storage/storage_backend.c
@@ -1173,8 +1173,9 @@ virStorageBackendForType(int type)


 virStorageFileBackendPtr
-virStorageFileBackendForType(int type,
-                             int protocol)
+virStorageFileBackendForTypeInternal(int type,
+                                     int protocol,
+                                     bool report)
 {
     size_t i;

@@ -1188,6 +1189,9 @@ virStorageFileBackendForType(int type,
         }
     }

+    if (!report)
+        return NULL;
+
     if (type == VIR_STORAGE_TYPE_NETWORK) {
         virReportError(VIR_ERR_INTERNAL_ERROR,
                        _("missing storage backend for network files "
@@ -1203,6 +1207,14 @@ virStorageFileBackendForType(int type,
 }


+virStorageFileBackendPtr
+virStorageFileBackendForType(int type,
+                             int protocol)
+{
+    return virStorageFileBackendForTypeInternal(type, protocol, true);
+}
+
+
 struct diskType {
     int part_table_type;
     unsigned short offset;
diff --git a/src/storage/storage_backend.h b/src/storage/storage_backend.h
index 56643fb..76c1afa 100644
--- a/src/storage/storage_backend.h
+++ b/src/storage/storage_backend.h
@@ -203,7 +203,9 @@ typedef int
                                int mode);

 virStorageFileBackendPtr virStorageFileBackendForType(int type, int protocol);
-
+virStorageFileBackendPtr virStorageFileBackendForTypeInternal(int type,
+                                                              int protocol,
+                                                              bool report);


 struct _virStorageFileBackend {
-- 
1.9.3




More information about the libvir-list mailing list