70 lines
2.7 KiB
Diff
70 lines
2.7 KiB
Diff
|
From c8d5d7684ae855f75e3bba3f72b5b3f973ccdea2 Mon Sep 17 00:00:00 2001
|
||
|
Message-Id: <c8d5d7684ae855f75e3bba3f72b5b3f973ccdea2@dist-git>
|
||
|
From: Peter Krempa <pkrempa@redhat.com>
|
||
|
Date: Fri, 17 Jan 2020 13:16:57 +0100
|
||
|
Subject: [PATCH] util: storagefile: Properly set transport type when parsing
|
||
|
NBD strings
|
||
|
MIME-Version: 1.0
|
||
|
Content-Type: text/plain; charset=UTF-8
|
||
|
Content-Transfer-Encoding: 8bit
|
||
|
|
||
|
When parsing legacy NBD backing file strings such as
|
||
|
'nbd:unix:/tmp/sock:exportname=/' we'd fail to set the transport to
|
||
|
VIR_STORAGE_NET_HOST_TRANS_UNIX. This started to be a problem once we
|
||
|
actually started to generate config of the backing store on the command
|
||
|
line with -blockdev as the JSON code would try to format it as TCP and
|
||
|
fail with:
|
||
|
|
||
|
internal error: argument key 'host' must not have null value
|
||
|
|
||
|
Set the type properly and add a test.
|
||
|
|
||
|
This bug was found by the libguestfs test suite in:
|
||
|
|
||
|
https://bugzilla.redhat.com/show_bug.cgi?id=1791614
|
||
|
|
||
|
Signed-off-by: Peter Krempa <pkrempa@redhat.com>
|
||
|
Reported-by: Ming Xie <mxie@redhat.com>
|
||
|
Reviewed-by: Eric Blake <eblake@redhat.com>
|
||
|
Tested-by: Richard W.M. Jones <rjones@redhat.com>
|
||
|
(cherry picked from commit 5f2fa393f721861132500f717ce509bb66afcdb7)
|
||
|
Message-Id: <79e24a6416d5bfbba6cdb2764b29663c2f8ccd45.1579263320.git.pkrempa@redhat.com>
|
||
|
Reviewed-by: Ján Tomko <jtomko@redhat.com>
|
||
|
Reviewed-by: Richard W.M. Jones <rjones@redhat.com>
|
||
|
---
|
||
|
src/util/virstoragefile.c | 2 +-
|
||
|
tests/virstoragetest.c | 4 ++++
|
||
|
2 files changed, 5 insertions(+), 1 deletion(-)
|
||
|
|
||
|
diff --git a/src/util/virstoragefile.c b/src/util/virstoragefile.c
|
||
|
index 1397f532fd..7a2af0ad94 100644
|
||
|
--- a/src/util/virstoragefile.c
|
||
|
+++ b/src/util/virstoragefile.c
|
||
|
@@ -2964,7 +2964,7 @@ virStorageSourceParseNBDColonString(const char *nbdstr,
|
||
|
}
|
||
|
|
||
|
src->hosts->socket = g_strdup(backing[2]);
|
||
|
-
|
||
|
+ src->hosts->transport = VIR_STORAGE_NET_HOST_TRANS_UNIX;
|
||
|
} else {
|
||
|
src->hosts->name = g_strdup(backing[1]);
|
||
|
|
||
|
diff --git a/tests/virstoragetest.c b/tests/virstoragetest.c
|
||
|
index 2862758752..370e19252b 100644
|
||
|
--- a/tests/virstoragetest.c
|
||
|
+++ b/tests/virstoragetest.c
|
||
|
@@ -1258,6 +1258,10 @@ mymain(void)
|
||
|
"<source protocol='nbd' name=':test'>\n"
|
||
|
" <host name='example.org' port='6000'/>\n"
|
||
|
"</source>\n");
|
||
|
+ TEST_BACKING_PARSE("nbd:unix:/tmp/sock:exportname=/",
|
||
|
+ "<source protocol='nbd' name='/'>\n"
|
||
|
+ " <host transport='unix' socket='/tmp/sock'/>\n"
|
||
|
+ "</source>\n");
|
||
|
TEST_BACKING_PARSE("nbd://example.org:1234",
|
||
|
"<source protocol='nbd'>\n"
|
||
|
" <host name='example.org' port='1234'/>\n"
|
||
|
--
|
||
|
2.25.0
|
||
|
|