提交 bb14d989 编写于 作者: P Peter Krempa

storage: Don't store leading '/' in image name when splitting out volume

Libvirt historically stores storage source path including the volume as
one string in the XML, but that is not really flexible enough when
dealing with the fields in the code. Previously we'd store the slash
separating the two as part of the image name. This was fine for gluster
but it's not necessary and does not scale well when converting other
protocols.

Don't store the slash as part of the path. The resulting change from
absolute to relative path within the gluster driver should be okay,
as the root directory is the default when accessing gluster.
上级 1ee7d4d9
...@@ -8403,7 +8403,7 @@ virDomainDiskSourceNetworkParse(xmlNodePtr node, ...@@ -8403,7 +8403,7 @@ virDomainDiskSourceNetworkParse(xmlNodePtr node,
src->volume = src->path; src->volume = src->path;
if (VIR_STRDUP(src->path, tmp) < 0) if (VIR_STRDUP(src->path, tmp + 1) < 0)
goto cleanup; goto cleanup;
tmp[0] = '\0'; tmp[0] = '\0';
...@@ -22167,7 +22167,7 @@ virDomainDiskSourceFormatNetwork(virBufferPtr attrBuf, ...@@ -22167,7 +22167,7 @@ virDomainDiskSourceFormatNetwork(virBufferPtr attrBuf,
virStorageNetProtocolTypeToString(src->protocol)); virStorageNetProtocolTypeToString(src->protocol));
if (src->volume) { if (src->volume) {
if (virAsprintf(&path, "%s%s", src->volume, src->path) < 0) if (virAsprintf(&path, "%s/%s", src->volume, src->path) < 0)
return -1; return -1;
} }
......
...@@ -427,7 +427,7 @@ qemuBlockStorageSourceGetURI(virStorageSourcePtr src) ...@@ -427,7 +427,7 @@ qemuBlockStorageSourceGetURI(virStorageSourcePtr src)
if (src->path) { if (src->path) {
if (src->volume) { if (src->volume) {
if (virAsprintf(&uri->path, "/%s%s", if (virAsprintf(&uri->path, "/%s/%s",
src->volume, src->path) < 0) src->volume, src->path) < 0)
goto cleanup; goto cleanup;
} else { } else {
......
...@@ -2450,7 +2450,7 @@ virStorageSourceParseBackingURI(virStorageSourcePtr src, ...@@ -2450,7 +2450,7 @@ virStorageSourceParseBackingURI(virStorageSourcePtr src,
src->volume = src->path; src->volume = src->path;
if (VIR_STRDUP(src->path, tmp) < 0) if (VIR_STRDUP(src->path, tmp + 1) < 0)
goto cleanup; goto cleanup;
tmp[0] = '\0'; tmp[0] = '\0';
...@@ -2931,7 +2931,7 @@ virStorageSourceParseBackingJSONGluster(virStorageSourcePtr src, ...@@ -2931,7 +2931,7 @@ virStorageSourceParseBackingJSONGluster(virStorageSourcePtr src,
src->protocol = VIR_STORAGE_NET_PROTOCOL_GLUSTER; src->protocol = VIR_STORAGE_NET_PROTOCOL_GLUSTER;
if (VIR_STRDUP(src->volume, volume) < 0 || if (VIR_STRDUP(src->volume, volume) < 0 ||
virAsprintf(&src->path, "/%s", path) < 0) VIR_STRDUP(src->path, path) < 0)
return -1; return -1;
nservers = virJSONValueArraySize(server); nservers = virJSONValueArraySize(server);
......
...@@ -27,7 +27,7 @@ id=virtio-disk0 \ ...@@ -27,7 +27,7 @@ id=virtio-disk0 \
format=raw,if=none,id=drive-virtio-disk1' \ format=raw,if=none,id=drive-virtio-disk1' \
-device virtio-blk-pci,bus=pci.0,addr=0x4,drive=drive-virtio-disk1,\ -device virtio-blk-pci,bus=pci.0,addr=0x4,drive=drive-virtio-disk1,\
id=virtio-disk1 \ id=virtio-disk1 \
-drive file.driver=gluster,file.volume=Volume3,file.path=/Image.qcow2,\ -drive file.driver=gluster,file.volume=Volume3,file.path=Image.qcow2,\
file.server.0.type=tcp,file.server.0.host=example.org,file.server.0.port=6000,\ file.server.0.type=tcp,file.server.0.host=example.org,file.server.0.port=6000,\
file.server.1.type=tcp,file.server.1.host=example.org,file.server.1.port=24007,\ file.server.1.type=tcp,file.server.1.host=example.org,file.server.1.port=24007,\
file.server.2.type=unix,file.server.2.socket=/path/to/sock,file.debug=4,\ file.server.2.type=unix,file.server.2.socket=/path/to/sock,file.debug=4,\
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册