diff --git a/src/qemu/qemu_block.c b/src/qemu/qemu_block.c index 8b71679118361efaa02a054e77fca3639a0b286e..6f81e9d96cb9745e57b5cdaf76a77d29098a4d25 100644 --- a/src/qemu/qemu_block.c +++ b/src/qemu/qemu_block.c @@ -467,11 +467,14 @@ qemuBlockStorageSourceGetURI(virStorageSourcePtr src) /** * qemuBlockStorageSourceBuildJSONSocketAddress * @host: the virStorageNetHostDefPtr definition to build - * @legacy: use 'tcp' instead of 'inet' for compatibility reasons + * @legacy: use old field names/values * * Formats @hosts into a json object conforming to the 'SocketAddress' type * in qemu. * + * For compatibility with old approach used in the gluster driver of old qemus + * use the old spelling for TCP transport and, the path field of the unix socket. + * * Returns a virJSONValuePtr for a single server. */ static virJSONValuePtr @@ -481,6 +484,7 @@ qemuBlockStorageSourceBuildJSONSocketAddress(virStorageNetHostDefPtr host, virJSONValuePtr server = NULL; virJSONValuePtr ret = NULL; const char *transport; + const char *field; char *port = NULL; switch ((virStorageNetHostTransport) host->transport) { @@ -502,9 +506,14 @@ qemuBlockStorageSourceBuildJSONSocketAddress(virStorageNetHostDefPtr host, break; case VIR_STORAGE_NET_HOST_TRANS_UNIX: + if (legacy) + field = "s:socket"; + else + field = "s:path"; + if (virJSONValueObjectCreate(&server, "s:type", "unix", - "s:socket", host->socket, + field, host->socket, NULL) < 0) goto cleanup; break; diff --git a/src/util/virstoragefile.c b/src/util/virstoragefile.c index 7f878039ba762b6fefb1919bdc89af9250324d2d..ebfb0a860ae8589224791af97e9417f19933b16b 100644 --- a/src/util/virstoragefile.c +++ b/src/util/virstoragefile.c @@ -2893,7 +2893,13 @@ virStorageSourceParseBackingJSONSocketAddress(virStorageNetHostDefPtr host, } else if (STREQ(type, "unix")) { host->transport = VIR_STORAGE_NET_HOST_TRANS_UNIX; - if (!(socket = virJSONValueObjectGetString(json, "socket"))) { + socket = virJSONValueObjectGetString(json, "path"); + + /* check for old spelling for gluster protocol */ + if (!socket) + socket = virJSONValueObjectGetString(json, "socket"); + + if (!socket) { virReportError(VIR_ERR_INVALID_ARG, "%s", _("missing socket path for udp backing server in " "JSON backing volume definition"));