Blame SOURCES/libvirt-util-storage-Allow-checking-whether-virStorageFileCreate-is-supported.patch

d759b5
From 080e123711e8c31634567836c9ca1adf79bcf904 Mon Sep 17 00:00:00 2001
d759b5
Message-Id: <080e123711e8c31634567836c9ca1adf79bcf904@dist-git>
d759b5
From: Peter Krempa <pkrempa@redhat.com>
d759b5
Date: Fri, 16 Aug 2019 14:36:52 +0200
d759b5
Subject: [PATCH] util: storage: Allow checking whether virStorageFileCreate is
d759b5
 supported
d759b5
MIME-Version: 1.0
d759b5
Content-Type: text/plain; charset=UTF-8
d759b5
Content-Transfer-Encoding: 8bit
d759b5
d759b5
Add virStorageFileSupportsCreate which allows silent check whether
d759b5
virStorageFileCreate is implemented.
d759b5
d759b5
Signed-off-by: Peter Krempa <pkrempa@redhat.com>
d759b5
Reviewed-by: Ján Tomko <jtomko@redhat.com>
d759b5
(cherry picked from commit e776194ad2501c9dcba8b4d9f1272342cd7f7c41)
d759b5
https: //bugzilla.redhat.com/show_bug.cgi?id=1724808
d759b5
Message-Id: <e4d77e48d0f20da3d0254c95de9904d77cf971df.1565958905.git.pkrempa@redhat.com>
d759b5
Reviewed-by: Ján Tomko <jtomko@redhat.com>
d759b5
---
d759b5
 src/libvirt_private.syms  |  1 +
d759b5
 src/util/virstoragefile.c | 20 ++++++++++++++++++++
d759b5
 src/util/virstoragefile.h |  1 +
d759b5
 3 files changed, 22 insertions(+)
d759b5
d759b5
diff --git a/src/libvirt_private.syms b/src/libvirt_private.syms
d759b5
index bf99930802..e696fa512c 100644
d759b5
--- a/src/libvirt_private.syms
d759b5
+++ b/src/libvirt_private.syms
d759b5
@@ -2845,6 +2845,7 @@ virStorageFileReportBrokenChain;
d759b5
 virStorageFileResize;
d759b5
 virStorageFileStat;
d759b5
 virStorageFileSupportsAccess;
d759b5
+virStorageFileSupportsCreate;
d759b5
 virStorageFileSupportsSecurityDriver;
d759b5
 virStorageFileUnlink;
d759b5
 virStorageIsFile;
d759b5
diff --git a/src/util/virstoragefile.c b/src/util/virstoragefile.c
d759b5
index f320bc1928..faf21db567 100644
d759b5
--- a/src/util/virstoragefile.c
d759b5
+++ b/src/util/virstoragefile.c
d759b5
@@ -4446,6 +4446,26 @@ virStorageFileSupportsAccess(const virStorageSource *src)
d759b5
 }
d759b5
 
d759b5
 
d759b5
+/**
d759b5
+ * virStorageFileSupportsCreate:
d759b5
+ * @src: a storage file structure
d759b5
+ *
d759b5
+ * Check if the storage driver supports creating storage described by @src
d759b5
+ * via virStorageFileCreate.
d759b5
+ */
d759b5
+int
d759b5
+virStorageFileSupportsCreate(const virStorageSource *src)
d759b5
+{
d759b5
+    virStorageFileBackendPtr backend;
d759b5
+    int rv;
d759b5
+
d759b5
+    if ((rv = virStorageFileGetBackendForSupportCheck(src, &backend)) < 1)
d759b5
+        return rv;
d759b5
+
d759b5
+    return backend->storageFileCreate ? 1 : 0;
d759b5
+}
d759b5
+
d759b5
+
d759b5
 void
d759b5
 virStorageFileDeinit(virStorageSourcePtr src)
d759b5
 {
d759b5
diff --git a/src/util/virstoragefile.h b/src/util/virstoragefile.h
d759b5
index 7d28dcfe65..b99afee437 100644
d759b5
--- a/src/util/virstoragefile.h
d759b5
+++ b/src/util/virstoragefile.h
d759b5
@@ -505,6 +505,7 @@ int virStorageFileChown(const virStorageSource *src, uid_t uid, gid_t gid);
d759b5
 
d759b5
 int virStorageFileSupportsSecurityDriver(const virStorageSource *src);
d759b5
 int virStorageFileSupportsAccess(const virStorageSource *src);
d759b5
+int virStorageFileSupportsCreate(const virStorageSource *src);
d759b5
 
d759b5
 int virStorageFileGetMetadata(virStorageSourcePtr src,
d759b5
                               uid_t uid, gid_t gid,
d759b5
-- 
d759b5
2.22.1
d759b5