|
|
d76c62 |
From 32163ac7b599b20c09458170e626784c0c9b4d9c Mon Sep 17 00:00:00 2001
|
|
|
d76c62 |
Message-Id: <32163ac7b599b20c09458170e626784c0c9b4d9c@dist-git>
|
|
|
d76c62 |
From: Peter Krempa <pkrempa@redhat.com>
|
|
|
d76c62 |
Date: Tue, 24 Mar 2020 16:26:04 +0100
|
|
|
d76c62 |
Subject: [PATCH] storage: Implement backing store support for "fat:" prefix
|
|
|
d76c62 |
MIME-Version: 1.0
|
|
|
d76c62 |
Content-Type: text/plain; charset=UTF-8
|
|
|
d76c62 |
Content-Transfer-Encoding: 8bit
|
|
|
d76c62 |
|
|
|
d76c62 |
qemublocktest showed that we don't add the "fat:" prefix for directory
|
|
|
d76c62 |
storage when formatting the backing store string. While it's unlikely to
|
|
|
d76c62 |
be used it's simple enough to actually implement the support rather than
|
|
|
d76c62 |
trying to forbid it.
|
|
|
d76c62 |
|
|
|
d76c62 |
Signed-off-by: Peter Krempa <pkrempa@redhat.com>
|
|
|
d76c62 |
Reviewed-by: Michal Privoznik <mprivozn@redhat.com>
|
|
|
d76c62 |
(cherry picked from commit 5a70f1048fb60b72d5a715d93e963ba07e041e23)
|
|
|
d76c62 |
https://bugzilla.redhat.com/show_bug.cgi?id=1804617
|
|
|
d76c62 |
Message-Id: <52a96160554678625eea409b7c816de12eeace1a.1585063415.git.pkrempa@redhat.com>
|
|
|
d76c62 |
Reviewed-by: Ján Tomko <jtomko@redhat.com>
|
|
|
d76c62 |
---
|
|
|
d76c62 |
src/qemu/qemu_block.c | 7 ++++++-
|
|
|
d76c62 |
src/util/virstoragefile.c | 9 +++++++++
|
|
|
d76c62 |
.../xml2json/dir-fat-cache-srconly.json | 2 +-
|
|
|
d76c62 |
.../xml2json/dir-fat-floppy-srconly.json | 2 +-
|
|
|
d76c62 |
.../xml2json/dir-fat-readonly-srconly.json | 2 +-
|
|
|
d76c62 |
tests/virstoragetest.c | 1 +
|
|
|
d76c62 |
6 files changed, 19 insertions(+), 4 deletions(-)
|
|
|
d76c62 |
|
|
|
d76c62 |
diff --git a/src/qemu/qemu_block.c b/src/qemu/qemu_block.c
|
|
|
d76c62 |
index 20579ec7b3..5a7364576a 100644
|
|
|
d76c62 |
--- a/src/qemu/qemu_block.c
|
|
|
d76c62 |
+++ b/src/qemu/qemu_block.c
|
|
|
d76c62 |
@@ -2032,8 +2032,13 @@ qemuBlockGetBackingStoreString(virStorageSourcePtr src,
|
|
|
d76c62 |
g_autofree char *backingJSON = NULL;
|
|
|
d76c62 |
|
|
|
d76c62 |
if (!src->sliceStorage) {
|
|
|
d76c62 |
- if (virStorageSourceIsLocalStorage(src))
|
|
|
d76c62 |
+ if (virStorageSourceIsLocalStorage(src)) {
|
|
|
d76c62 |
+ if (src->type == VIR_STORAGE_TYPE_DIR &&
|
|
|
d76c62 |
+ src->format == VIR_STORAGE_FILE_FAT)
|
|
|
d76c62 |
+ return g_strdup_printf("fat:%s", src->path);
|
|
|
d76c62 |
+
|
|
|
d76c62 |
return g_strdup(src->path);
|
|
|
d76c62 |
+ }
|
|
|
d76c62 |
|
|
|
d76c62 |
/* generate simplified URIs for the easy cases */
|
|
|
d76c62 |
if (actualType == VIR_STORAGE_TYPE_NETWORK &&
|
|
|
d76c62 |
diff --git a/src/util/virstoragefile.c b/src/util/virstoragefile.c
|
|
|
d76c62 |
index 2e54620139..5423f0b955 100644
|
|
|
d76c62 |
--- a/src/util/virstoragefile.c
|
|
|
d76c62 |
+++ b/src/util/virstoragefile.c
|
|
|
d76c62 |
@@ -3922,6 +3922,7 @@ virStorageSourceNewFromBackingAbsolute(const char *path,
|
|
|
d76c62 |
virStorageSourcePtr *src)
|
|
|
d76c62 |
{
|
|
|
d76c62 |
const char *json;
|
|
|
d76c62 |
+ const char *dirpath;
|
|
|
d76c62 |
int rc = 0;
|
|
|
d76c62 |
g_autoptr(virStorageSource) def = NULL;
|
|
|
d76c62 |
|
|
|
d76c62 |
@@ -3935,6 +3936,14 @@ virStorageSourceNewFromBackingAbsolute(const char *path,
|
|
|
d76c62 |
|
|
|
d76c62 |
def->path = g_strdup(path);
|
|
|
d76c62 |
} else {
|
|
|
d76c62 |
+ if ((dirpath = STRSKIP(path, "fat:"))) {
|
|
|
d76c62 |
+ def->type = VIR_STORAGE_TYPE_DIR;
|
|
|
d76c62 |
+ def->format = VIR_STORAGE_FILE_FAT;
|
|
|
d76c62 |
+ def->path = g_strdup(dirpath);
|
|
|
d76c62 |
+ *src = g_steal_pointer(&def;;
|
|
|
d76c62 |
+ return 0;
|
|
|
d76c62 |
+ }
|
|
|
d76c62 |
+
|
|
|
d76c62 |
def->type = VIR_STORAGE_TYPE_NETWORK;
|
|
|
d76c62 |
|
|
|
d76c62 |
VIR_DEBUG("parsing backing store string: '%s'", path);
|
|
|
d76c62 |
diff --git a/tests/qemublocktestdata/xml2json/dir-fat-cache-srconly.json b/tests/qemublocktestdata/xml2json/dir-fat-cache-srconly.json
|
|
|
d76c62 |
index 8bc58fa033..80f866f08b 100644
|
|
|
d76c62 |
--- a/tests/qemublocktestdata/xml2json/dir-fat-cache-srconly.json
|
|
|
d76c62 |
+++ b/tests/qemublocktestdata/xml2json/dir-fat-cache-srconly.json
|
|
|
d76c62 |
@@ -6,5 +6,5 @@
|
|
|
d76c62 |
"floppy": false
|
|
|
d76c62 |
}
|
|
|
d76c62 |
backing store string:
|
|
|
d76c62 |
- /var/somefiles
|
|
|
d76c62 |
+ fat:/var/somefiles
|
|
|
d76c62 |
)
|
|
|
d76c62 |
diff --git a/tests/qemublocktestdata/xml2json/dir-fat-floppy-srconly.json b/tests/qemublocktestdata/xml2json/dir-fat-floppy-srconly.json
|
|
|
d76c62 |
index 043b796435..6c86f1da06 100644
|
|
|
d76c62 |
--- a/tests/qemublocktestdata/xml2json/dir-fat-floppy-srconly.json
|
|
|
d76c62 |
+++ b/tests/qemublocktestdata/xml2json/dir-fat-floppy-srconly.json
|
|
|
d76c62 |
@@ -6,5 +6,5 @@
|
|
|
d76c62 |
"floppy": true
|
|
|
d76c62 |
}
|
|
|
d76c62 |
backing store string:
|
|
|
d76c62 |
- /var/somefiles
|
|
|
d76c62 |
+ fat:/var/somefiles
|
|
|
d76c62 |
)
|
|
|
d76c62 |
diff --git a/tests/qemublocktestdata/xml2json/dir-fat-readonly-srconly.json b/tests/qemublocktestdata/xml2json/dir-fat-readonly-srconly.json
|
|
|
d76c62 |
index 8bc58fa033..80f866f08b 100644
|
|
|
d76c62 |
--- a/tests/qemublocktestdata/xml2json/dir-fat-readonly-srconly.json
|
|
|
d76c62 |
+++ b/tests/qemublocktestdata/xml2json/dir-fat-readonly-srconly.json
|
|
|
d76c62 |
@@ -6,5 +6,5 @@
|
|
|
d76c62 |
"floppy": false
|
|
|
d76c62 |
}
|
|
|
d76c62 |
backing store string:
|
|
|
d76c62 |
- /var/somefiles
|
|
|
d76c62 |
+ fat:/var/somefiles
|
|
|
d76c62 |
)
|
|
|
d76c62 |
diff --git a/tests/virstoragetest.c b/tests/virstoragetest.c
|
|
|
d76c62 |
index ca428f5ca7..a61522965b 100644
|
|
|
d76c62 |
--- a/tests/virstoragetest.c
|
|
|
d76c62 |
+++ b/tests/virstoragetest.c
|
|
|
d76c62 |
@@ -1225,6 +1225,7 @@ mymain(void)
|
|
|
d76c62 |
TEST_BACKING_PARSE_FULL(bck, xml, 0)
|
|
|
d76c62 |
|
|
|
d76c62 |
TEST_BACKING_PARSE("path", "<source file='path'/>\n");
|
|
|
d76c62 |
+ TEST_BACKING_PARSE("fat:/somedir", "<source dir='/somedir'/>\n");
|
|
|
d76c62 |
TEST_BACKING_PARSE("://", NULL);
|
|
|
d76c62 |
TEST_BACKING_PARSE("http://example.com",
|
|
|
d76c62 |
"<source protocol='http' name=''>\n"
|
|
|
d76c62 |
--
|
|
|
d76c62 |
2.26.0
|
|
|
d76c62 |
|