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.
---
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