提交 5f3b4a37 编写于 作者: P Peter Krempa

qemublocktest: Test backing store strings

With -blockdev libvirt provides the string which is recorded  as
'backing store' property of an image to qemu. Add testing for
qemuBlockGetBackingStoreString which generates these strings as there's
logic which determines which format to use.
Signed-off-by: NPeter Krempa <pkrempa@redhat.com>
Reviewed-by: NMichal Privoznik <mprivozn@redhat.com>
上级 93171b63
...@@ -184,6 +184,7 @@ struct testQemuDiskXMLToJSONImageData { ...@@ -184,6 +184,7 @@ struct testQemuDiskXMLToJSONImageData {
virJSONValuePtr formatprops; virJSONValuePtr formatprops;
virJSONValuePtr storageprops; virJSONValuePtr storageprops;
virJSONValuePtr storagepropssrc; virJSONValuePtr storagepropssrc;
char *backingstore;
}; };
...@@ -210,6 +211,7 @@ testQemuDiskXMLToPropsClear(struct testQemuDiskXMLToJSONData *data) ...@@ -210,6 +211,7 @@ testQemuDiskXMLToPropsClear(struct testQemuDiskXMLToJSONData *data)
virJSONValueFree(data->images[i].formatprops); virJSONValueFree(data->images[i].formatprops);
virJSONValueFree(data->images[i].storageprops); virJSONValueFree(data->images[i].storageprops);
virJSONValueFree(data->images[i].storagepropssrc); virJSONValueFree(data->images[i].storagepropssrc);
g_free(data->images[i].backingstore);
} }
data->nimages = 0; data->nimages = 0;
VIR_FREE(data->images); VIR_FREE(data->images);
...@@ -287,6 +289,7 @@ testQemuDiskXMLToProps(const void *opaque) ...@@ -287,6 +289,7 @@ testQemuDiskXMLToProps(const void *opaque)
} }
for (n = disk->src; virStorageSourceIsBacking(n); n = n->backingStore) { for (n = disk->src; virStorageSourceIsBacking(n); n = n->backingStore) {
g_autofree char *backingstore = NULL;
if (testQemuDiskXMLToJSONFakeSecrets(n) < 0) if (testQemuDiskXMLToJSONFakeSecrets(n) < 0)
return -1; return -1;
...@@ -298,7 +301,8 @@ testQemuDiskXMLToProps(const void *opaque) ...@@ -298,7 +301,8 @@ testQemuDiskXMLToProps(const void *opaque)
if (!(formatProps = qemuBlockStorageSourceGetBlockdevProps(n, n->backingStore)) || if (!(formatProps = qemuBlockStorageSourceGetBlockdevProps(n, n->backingStore)) ||
!(storageSrcOnlyProps = qemuBlockStorageSourceGetBackendProps(n, false, true, true)) || !(storageSrcOnlyProps = qemuBlockStorageSourceGetBackendProps(n, false, true, true)) ||
!(storageProps = qemuBlockStorageSourceGetBackendProps(n, false, false, true))) { !(storageProps = qemuBlockStorageSourceGetBackendProps(n, false, false, true)) ||
!(backingstore = qemuBlockGetBackingStoreString(n, true))) {
if (!data->fail) { if (!data->fail) {
VIR_TEST_VERBOSE("failed to generate qemu blockdev props"); VIR_TEST_VERBOSE("failed to generate qemu blockdev props");
return -1; return -1;
...@@ -314,6 +318,7 @@ testQemuDiskXMLToProps(const void *opaque) ...@@ -314,6 +318,7 @@ testQemuDiskXMLToProps(const void *opaque)
data->images[data->nimages].formatprops = g_steal_pointer(&formatProps); data->images[data->nimages].formatprops = g_steal_pointer(&formatProps);
data->images[data->nimages].storageprops = g_steal_pointer(&storageProps); data->images[data->nimages].storageprops = g_steal_pointer(&storageProps);
data->images[data->nimages].storagepropssrc = g_steal_pointer(&storageSrcOnlyProps); data->images[data->nimages].storagepropssrc = g_steal_pointer(&storageSrcOnlyProps);
data->images[data->nimages].backingstore = g_steal_pointer(&backingstore);
data->nimages++; data->nimages++;
} }
...@@ -425,10 +430,21 @@ testQemuDiskXMLToPropsValidateFileSrcOnly(const void *opaque) ...@@ -425,10 +430,21 @@ testQemuDiskXMLToPropsValidateFileSrcOnly(const void *opaque)
for (i = 0; i < data->nimages; i++) { for (i = 0; i < data->nimages; i++) {
g_autofree char *jsonstr = NULL; g_autofree char *jsonstr = NULL;
virBufferAddLit(&buf, "(\n");
virBufferAdjustIndent(&buf, 2);
virBufferAddLit(&buf, "source only properties:\n");
if (!(jsonstr = virJSONValueToString(data->images[i].storagepropssrc, true))) if (!(jsonstr = virJSONValueToString(data->images[i].storagepropssrc, true)))
return -1; return -1;
virBufferAdd(&buf, jsonstr, -1); virBufferAddStr(&buf, jsonstr);
virBufferAddLit(&buf, "backing store string:\n");
virBufferAddStr(&buf, data->images[i].backingstore);
virBufferTrim(&buf, "\n");
virBufferAdjustIndent(&buf, -2);
virBufferAddLit(&buf, "\n)\n");
} }
actual = virBufferContentAndReset(&buf); actual = virBufferContentAndReset(&buf);
......
{ (
"driver": "host_device", source only properties:
"filename": "/dev/blah" {
} "driver": "host_device",
"filename": "/dev/blah"
}
backing store string:
/dev/blah
)
{ (
"driver": "host_device", source only properties:
"filename": "/dev/blah" {
} "driver": "host_device",
"filename": "/dev/blah"
}
backing store string:
/dev/blah
)
{ (
"driver": "vvfat", source only properties:
"dir": "/var/somefiles", {
"floppy": false "driver": "vvfat",
} "dir": "/var/somefiles",
"floppy": false
}
backing store string:
/var/somefiles
)
{ (
"driver": "vvfat", source only properties:
"dir": "/var/somefiles", {
"floppy": true "driver": "vvfat",
} "dir": "/var/somefiles",
"floppy": true
}
backing store string:
/var/somefiles
)
{ (
"driver": "vvfat", source only properties:
"dir": "/var/somefiles", {
"floppy": false "driver": "vvfat",
} "dir": "/var/somefiles",
"floppy": false
}
backing store string:
/var/somefiles
)
{ (
"driver": "file", source only properties:
"filename": "/var/lib/libvirt/images/a" {
} "driver": "file",
{ "filename": "/var/lib/libvirt/images/a"
"driver": "file", }
"filename": "/var/lib/libvirt/images/b" backing store string:
} /var/lib/libvirt/images/a
{ )
"driver": "gluster", (
"volume": "images", source only properties:
"path": "c", {
"server": [ "driver": "file",
{ "filename": "/var/lib/libvirt/images/b"
"type": "inet", }
"host": "test.org", backing store string:
"port": "24007" /var/lib/libvirt/images/b
} )
] (
} source only properties:
{ {
"driver": "file", "driver": "gluster",
"filename": "/var/lib/libvirt/images/d" "volume": "images",
} "path": "c",
"server": [
{
"type": "inet",
"host": "test.org",
"port": "24007"
}
]
}
backing store string:
gluster://test.org:24007/images/c
)
(
source only properties:
{
"driver": "file",
"filename": "/var/lib/libvirt/images/d"
}
backing store string:
/var/lib/libvirt/images/d
)
{ (
"driver": "file", source only properties:
"filename": "/var/lib/libvirt/images/a" {
} "driver": "file",
{ "filename": "/var/lib/libvirt/images/a"
"driver": "file", }
"filename": "/var/lib/libvirt/images/b" backing store string:
} /var/lib/libvirt/images/a
{ )
"driver": "gluster", (
"volume": "images", source only properties:
"path": "c", {
"server": [ "driver": "file",
{ "filename": "/var/lib/libvirt/images/b"
"type": "inet", }
"host": "test.org", backing store string:
"port": "24007" /var/lib/libvirt/images/b
} )
] (
} source only properties:
{ {
"driver": "file", "driver": "gluster",
"filename": "/var/lib/libvirt/images/d" "volume": "images",
} "path": "c",
"server": [
{
"type": "inet",
"host": "test.org",
"port": "24007"
}
]
}
backing store string:
gluster://test.org:24007/images/c
)
(
source only properties:
{
"driver": "file",
"filename": "/var/lib/libvirt/images/d"
}
backing store string:
/var/lib/libvirt/images/d
)
{ (
"driver": "file", source only properties:
"filename": "/var/lib/libvirt/images/a" {
} "driver": "file",
{ "filename": "/var/lib/libvirt/images/a"
"driver": "file", }
"filename": "/var/lib/libvirt/images/b" backing store string:
} /var/lib/libvirt/images/a
{ )
"driver": "gluster", (
"volume": "images", source only properties:
"path": "c", {
"server": [ "driver": "file",
{ "filename": "/var/lib/libvirt/images/b"
"type": "inet", }
"host": "test.org", backing store string:
"port": "24007" /var/lib/libvirt/images/b
} )
] (
} source only properties:
{ {
"driver": "file", "driver": "gluster",
"filename": "/var/lib/libvirt/images/d" "volume": "images",
} "path": "c",
"server": [
{
"type": "inet",
"host": "test.org",
"port": "24007"
}
]
}
backing store string:
gluster://test.org:24007/images/c
)
(
source only properties:
{
"driver": "file",
"filename": "/var/lib/libvirt/images/d"
}
backing store string:
/var/lib/libvirt/images/d
)
{ (
"driver": "file", source only properties:
"filename": "/var/lib/libvirt/images/a" {
} "driver": "file",
{ "filename": "/var/lib/libvirt/images/a"
"driver": "file", }
"filename": "/var/lib/libvirt/images/b" backing store string:
} /var/lib/libvirt/images/a
{ )
"driver": "gluster", (
"volume": "images", source only properties:
"path": "c", {
"server": [ "driver": "file",
{ "filename": "/var/lib/libvirt/images/b"
"type": "inet", }
"host": "test.org", backing store string:
"port": "24007" /var/lib/libvirt/images/b
} )
] (
} source only properties:
{ {
"driver": "file", "driver": "gluster",
"filename": "/var/lib/libvirt/images/d" "volume": "images",
} "path": "c",
"server": [
{
"type": "inet",
"host": "test.org",
"port": "24007"
}
]
}
backing store string:
gluster://test.org:24007/images/c
)
(
source only properties:
{
"driver": "file",
"filename": "/var/lib/libvirt/images/d"
}
backing store string:
/var/lib/libvirt/images/d
)
{ (
"driver": "file", source only properties:
"filename": "/var/lib/libvirt/images/a" {
} "driver": "file",
{ "filename": "/var/lib/libvirt/images/a"
"driver": "file", }
"filename": "/var/lib/libvirt/images/b" backing store string:
} /var/lib/libvirt/images/a
{ )
"driver": "gluster", (
"volume": "images", source only properties:
"path": "c", {
"server": [ "driver": "file",
{ "filename": "/var/lib/libvirt/images/b"
"type": "inet", }
"host": "test.org", backing store string:
"port": "24007" /var/lib/libvirt/images/b
} )
] (
} source only properties:
{ {
"driver": "file", "driver": "gluster",
"filename": "/var/lib/libvirt/images/d" "volume": "images",
} "path": "c",
"server": [
{
"type": "inet",
"host": "test.org",
"port": "24007"
}
]
}
backing store string:
gluster://test.org:24007/images/c
)
(
source only properties:
{
"driver": "file",
"filename": "/var/lib/libvirt/images/d"
}
backing store string:
/var/lib/libvirt/images/d
)
{ (
"driver": "file", source only properties:
"filename": "/var/lib/libvirt/images/a" {
} "driver": "file",
{ "filename": "/var/lib/libvirt/images/a"
"driver": "file", }
"filename": "/var/lib/libvirt/images/b" backing store string:
} /var/lib/libvirt/images/a
{ )
"driver": "gluster", (
"volume": "images", source only properties:
"path": "c", {
"server": [ "driver": "file",
{ "filename": "/var/lib/libvirt/images/b"
"type": "inet", }
"host": "test.org", backing store string:
"port": "24007" /var/lib/libvirt/images/b
} )
] (
} source only properties:
{ {
"driver": "file", "driver": "gluster",
"filename": "/var/lib/libvirt/images/d" "volume": "images",
} "path": "c",
"server": [
{
"type": "inet",
"host": "test.org",
"port": "24007"
}
]
}
backing store string:
gluster://test.org:24007/images/c
)
(
source only properties:
{
"driver": "file",
"filename": "/var/lib/libvirt/images/d"
}
backing store string:
/var/lib/libvirt/images/d
)
{ (
"driver": "file", source only properties:
"filename": "/var/lib/libvirt/images/a" {
} "driver": "file",
{ "filename": "/var/lib/libvirt/images/a"
"driver": "file", }
"filename": "/var/lib/libvirt/images/b" backing store string:
} /var/lib/libvirt/images/a
{ )
"driver": "gluster", (
"volume": "images", source only properties:
"path": "c", {
"server": [ "driver": "file",
{ "filename": "/var/lib/libvirt/images/b"
"type": "inet", }
"host": "test.org", backing store string:
"port": "24007" /var/lib/libvirt/images/b
} )
] (
} source only properties:
{ {
"driver": "file", "driver": "gluster",
"filename": "/var/lib/libvirt/images/d" "volume": "images",
} "path": "c",
"server": [
{
"type": "inet",
"host": "test.org",
"port": "24007"
}
]
}
backing store string:
gluster://test.org:24007/images/c
)
(
source only properties:
{
"driver": "file",
"filename": "/var/lib/libvirt/images/d"
}
backing store string:
/var/lib/libvirt/images/d
)
{ (
"driver": "file", source only properties:
"filename": "/var/lib/libvirt/images/a" {
} "driver": "file",
{ "filename": "/var/lib/libvirt/images/a"
"driver": "file", }
"filename": "/var/lib/libvirt/images/b" backing store string:
} /var/lib/libvirt/images/a
{ )
"driver": "file", (
"filename": "/var/lib/libvirt/images/c" source only properties:
} {
{ "driver": "file",
"driver": "file", "filename": "/var/lib/libvirt/images/b"
"filename": "/var/lib/libvirt/images/d" }
} backing store string:
/var/lib/libvirt/images/b
)
(
source only properties:
{
"driver": "file",
"filename": "/var/lib/libvirt/images/c"
}
backing store string:
/var/lib/libvirt/images/c
)
(
source only properties:
{
"driver": "file",
"filename": "/var/lib/libvirt/images/d"
}
backing store string:
/var/lib/libvirt/images/d
)
{ (
"driver": "file", source only properties:
"filename": "/var/lib/libvirt/images/a" {
} "driver": "file",
{ "filename": "/var/lib/libvirt/images/a"
"driver": "file", }
"filename": "/var/lib/libvirt/images/b" backing store string:
} /var/lib/libvirt/images/a
{ )
"driver": "gluster", (
"volume": "images", source only properties:
"path": "c", {
"server": [ "driver": "file",
{ "filename": "/var/lib/libvirt/images/b"
"type": "inet", }
"host": "test.org", backing store string:
"port": "24007" /var/lib/libvirt/images/b
} )
] (
} source only properties:
{ {
"driver": "file", "driver": "gluster",
"filename": "/var/lib/libvirt/images/d" "volume": "images",
} "path": "c",
"server": [
{
"type": "inet",
"host": "test.org",
"port": "24007"
}
]
}
backing store string:
gluster://test.org:24007/images/c
)
(
source only properties:
{
"driver": "file",
"filename": "/var/lib/libvirt/images/d"
}
backing store string:
/var/lib/libvirt/images/d
)
{ (
"driver": "file", source only properties:
"filename": "/var/lib/libvirt/images/a" {
} "driver": "file",
{ "filename": "/var/lib/libvirt/images/a"
"driver": "file", }
"filename": "/var/lib/libvirt/images/b" backing store string:
} /var/lib/libvirt/images/a
{ )
"driver": "gluster", (
"volume": "images", source only properties:
"path": "c", {
"server": [ "driver": "file",
{ "filename": "/var/lib/libvirt/images/b"
"type": "inet", }
"host": "test.org", backing store string:
"port": "24007" /var/lib/libvirt/images/b
} )
] (
} source only properties:
{ {
"driver": "file", "driver": "gluster",
"filename": "/var/lib/libvirt/images/d" "volume": "images",
} "path": "c",
"server": [
{
"type": "inet",
"host": "test.org",
"port": "24007"
}
]
}
backing store string:
gluster://test.org:24007/images/c
)
(
source only properties:
{
"driver": "file",
"filename": "/var/lib/libvirt/images/d"
}
backing store string:
/var/lib/libvirt/images/d
)
{ (
"driver": "file", source only properties:
"filename": "/var/lib/libvirt/images/a" {
} "driver": "file",
{ "filename": "/var/lib/libvirt/images/a"
"driver": "file", }
"filename": "/var/lib/libvirt/images/b" backing store string:
} /var/lib/libvirt/images/a
{ )
"driver": "gluster", (
"volume": "images", source only properties:
"path": "c", {
"server": [ "driver": "file",
{ "filename": "/var/lib/libvirt/images/b"
"type": "inet", }
"host": "test.org", backing store string:
"port": "24007" /var/lib/libvirt/images/b
} )
] (
} source only properties:
{ {
"driver": "file", "driver": "gluster",
"filename": "/var/lib/libvirt/images/d" "volume": "images",
} "path": "c",
"server": [
{
"type": "inet",
"host": "test.org",
"port": "24007"
}
]
}
backing store string:
gluster://test.org:24007/images/c
)
(
source only properties:
{
"driver": "file",
"filename": "/var/lib/libvirt/images/d"
}
backing store string:
/var/lib/libvirt/images/d
)
{ (
"driver": "file", source only properties:
"filename": "/path/to/i.img" {
} "driver": "file",
"filename": "/path/to/i.img"
}
backing store string:
/path/to/i.img
)
{ (
"driver": "file", source only properties:
"filename": "/path/to/i.img" {
} "driver": "file",
"filename": "/path/to/i.img"
}
backing store string:
/path/to/i.img
)
{ (
"driver": "file", source only properties:
"filename": "/path/to/i.img" {
} "driver": "file",
"filename": "/path/to/i.img"
}
backing store string:
/path/to/i.img
)
{ (
"driver": "file", source only properties:
"filename": "/path/to/i.img" {
} "driver": "file",
"filename": "/path/to/i.img"
}
backing store string:
/path/to/i.img
)
{ (
"driver": "file", source only properties:
"filename": "/var/lib/libvirt/images/a" {
} "driver": "file",
{ "filename": "/var/lib/libvirt/images/a"
"driver": "file", }
"filename": "/var/lib/libvirt/images/b" backing store string:
} /var/lib/libvirt/images/a
)
(
source only properties:
{
"driver": "file",
"filename": "/var/lib/libvirt/images/b"
}
backing store string:
/var/lib/libvirt/images/b
)
{ (
"driver": "file", source only properties:
"filename": "/var/lib/libvirt/images/rhel7.3.1507297895" {
} "driver": "file",
{ "filename": "/var/lib/libvirt/images/rhel7.3.1507297895"
"driver": "file", }
"filename": "/var/lib/libvirt/images/rhel7.3.1484071872" backing store string:
} /var/lib/libvirt/images/rhel7.3.1507297895
{ )
"driver": "file", (
"filename": "/var/lib/libvirt/images/rhel7.3.1483615252" source only properties:
} {
{ "driver": "file",
"driver": "file", "filename": "/var/lib/libvirt/images/rhel7.3.1484071872"
"filename": "/var/lib/libvirt/images/rhel7.3.1483605924" }
} backing store string:
{ /var/lib/libvirt/images/rhel7.3.1484071872
"driver": "file", )
"filename": "/var/lib/libvirt/images/rhel7.3.1483605920" (
} source only properties:
{ {
"driver": "file", "driver": "file",
"filename": "/var/lib/libvirt/images/rhel7.3.1483546244" "filename": "/var/lib/libvirt/images/rhel7.3.1483615252"
} }
{ backing store string:
"driver": "file", /var/lib/libvirt/images/rhel7.3.1483615252
"filename": "/var/lib/libvirt/images/rhel7.3.1483545901" )
} (
{ source only properties:
"driver": "file", {
"filename": "/var/lib/libvirt/images/rhel7.3.1483545313" "driver": "file",
} "filename": "/var/lib/libvirt/images/rhel7.3.1483605924"
{ }
"driver": "file", backing store string:
"filename": "/var/lib/libvirt/images/rhel7.3.1483536402" /var/lib/libvirt/images/rhel7.3.1483605924
} )
{ (
"driver": "file", source only properties:
"filename": "/var/lib/libvirt/images/rhel7.3.qcow2" {
} "driver": "file",
"filename": "/var/lib/libvirt/images/rhel7.3.1483605920"
}
backing store string:
/var/lib/libvirt/images/rhel7.3.1483605920
)
(
source only properties:
{
"driver": "file",
"filename": "/var/lib/libvirt/images/rhel7.3.1483546244"
}
backing store string:
/var/lib/libvirt/images/rhel7.3.1483546244
)
(
source only properties:
{
"driver": "file",
"filename": "/var/lib/libvirt/images/rhel7.3.1483545901"
}
backing store string:
/var/lib/libvirt/images/rhel7.3.1483545901
)
(
source only properties:
{
"driver": "file",
"filename": "/var/lib/libvirt/images/rhel7.3.1483545313"
}
backing store string:
/var/lib/libvirt/images/rhel7.3.1483545313
)
(
source only properties:
{
"driver": "file",
"filename": "/var/lib/libvirt/images/rhel7.3.1483536402"
}
backing store string:
/var/lib/libvirt/images/rhel7.3.1483536402
)
(
source only properties:
{
"driver": "file",
"filename": "/var/lib/libvirt/images/rhel7.3.qcow2"
}
backing store string:
/var/lib/libvirt/images/rhel7.3.qcow2
)
{ (
"driver": "file", source only properties:
"filename": "/var/lib/libvirt/images/rhel7.3.1507297895" {
} "driver": "file",
{ "filename": "/var/lib/libvirt/images/rhel7.3.1507297895"
"driver": "file", }
"filename": "/var/lib/libvirt/images/rhel7.3.1484071872" backing store string:
} /var/lib/libvirt/images/rhel7.3.1507297895
)
(
source only properties:
{
"driver": "file",
"filename": "/var/lib/libvirt/images/rhel7.3.1484071872"
}
backing store string:
/var/lib/libvirt/images/rhel7.3.1484071872
)
{ (
"driver": "file", source only properties:
"filename": "/path/to/i.img" {
} "driver": "file",
"filename": "/path/to/i.img"
}
backing store string:
/path/to/i.img
)
{ (
"driver": "file", source only properties:
"filename": "/path/luks.img" {
} "driver": "file",
"filename": "/path/luks.img"
}
backing store string:
/path/luks.img
)
{ (
"driver": "file", source only properties:
"filename": "/var/lib/libvirt/images/i.img" {
} "driver": "file",
"filename": "/var/lib/libvirt/images/i.img"
}
backing store string:
/var/lib/libvirt/images/i.img
)
{ (
"driver": "file", source only properties:
"filename": "/path/to/i.img" {
} "driver": "file",
"filename": "/path/to/i.img"
}
backing store string:
/path/to/i.img
)
{ (
"driver": "file", source only properties:
"filename": "/path/to/i.img" {
} "driver": "file",
"filename": "/path/to/i.img"
}
backing store string:
/path/to/i.img
)
{ (
"driver": "file", source only properties:
"filename": "/path/to/i.img" {
} "driver": "file",
"filename": "/path/to/i.img"
}
backing store string:
/path/to/i.img
)
{ (
"driver": "nbd", source only properties:
"server": { {
"type": "inet", "driver": "nbd",
"host": "host1.example.com", "server": {
"port": "10809" "type": "inet",
"host": "host1.example.com",
"port": "10809"
}
} }
} backing store string:
nbd://host1.example.com:10809
)
{ (
"driver": "rbd", source only properties:
"pool": "rbdpool", {
"image": "rbdimg", "driver": "rbd",
"server": [ "pool": "rbdpool",
{ "image": "rbdimg",
"host": "host1.example.com", "server": [
"port": "0" {
}, "host": "host1.example.com",
{ "port": "0"
"host": "host2.example.com", },
"port": "0" {
} "host": "host2.example.com",
] "port": "0"
} }
{ ]
"driver": "iscsi", }
"portal": "example.org:3260", backing store string:
"target": "iscsitarget", json:{
"lun": 1, "driver": "rbd",
"transport": "tcp" "pool": "rbdpool",
} "image": "rbdimg",
"server": [
{
"host": "host1.example.com",
"port": "0"
},
{
"host": "host2.example.com",
"port": "0"
}
]
}
)
(
source only properties:
{
"driver": "iscsi",
"portal": "example.org:3260",
"target": "iscsitarget",
"lun": 1,
"transport": "tcp"
}
backing store string:
iscsi://example.org:3260/iscsitarget/1
)
{ (
"driver": "rbd", source only properties:
"pool": "rbdpool", {
"image": "rbdimg", "driver": "rbd",
"server": [ "pool": "rbdpool",
{ "image": "rbdimg",
"host": "host1.example.com", "server": [
"port": "0" {
}, "host": "host1.example.com",
{ "port": "0"
"host": "host2.example.com", },
"port": "0" {
} "host": "host2.example.com",
] "port": "0"
} }
{ ]
"driver": "iscsi", }
"portal": "example.org:3260", backing store string:
"target": "iqn.2016-09.com.example:iscsitarget", json:{
"lun": 1, "driver": "rbd",
"transport": "tcp" "pool": "rbdpool",
} "image": "rbdimg",
"server": [
{
"host": "host1.example.com",
"port": "0"
},
{
"host": "host2.example.com",
"port": "0"
}
]
}
)
(
source only properties:
{
"driver": "iscsi",
"portal": "example.org:3260",
"target": "iqn.2016-09.com.example:iscsitarget",
"lun": 1,
"transport": "tcp"
}
backing store string:
iscsi://example.org:3260/iqn.2016-09.com.example%3Aiscsitarget/1
)
{ (
"driver": "nvme", source only properties:
"device": "0000:01:00.0", {
"namespace": 1 "driver": "nvme",
} "device": "0000:01:00.0",
"namespace": 1
}
backing store string:
json:{
"driver": "nvme",
"device": "0000:01:00.0",
"namespace": 1
}
)
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册