[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: [PATCH 09/13] nbd: add GUri-based URI parsing version
From: |
Daniel P . Berrangé |
Subject: |
Re: [PATCH 09/13] nbd: add GUri-based URI parsing version |
Date: |
Fri, 10 Jul 2020 09:31:35 +0100 |
User-agent: |
Mutt/1.14.3 (2020-06-14) |
On Thu, Jul 09, 2020 at 11:42:30PM +0400, Marc-André Lureau wrote:
> Signed-off-by: Marc-André Lureau <marcandre.lureau@redhat.com>
> ---
> block/nbd.c | 86 +++++++++++++++++++++++++++++++++++-----------
> util/Makefile.objs | 2 +-
> 2 files changed, 66 insertions(+), 22 deletions(-)
>
> diff --git a/block/nbd.c b/block/nbd.c
> index faadcab442b..fdc4a53a98f 100644
> --- a/block/nbd.c
> +++ b/block/nbd.c
> @@ -31,7 +31,10 @@
> #include "qemu/osdep.h"
>
> #include "trace.h"
> +#ifndef HAVE_GLIB_GURI
> #include "qemu/uri.h"
> +#endif
> +#include "qemu/error-report.h"
> #include "qemu/option.h"
> #include "qemu/cutils.h"
> #include "qemu/main-loop.h"
> @@ -1513,71 +1516,112 @@ static int nbd_client_connect(BlockDriverState *bs,
> Error **errp)
> /*
> * Parse nbd_open options
> */
> -
> static int nbd_parse_uri(const char *filename, QDict *options)
> {
> + const char *p, *scheme, *server, *socket = NULL;
> + int port;
> + bool is_unix;
> +
> +#ifdef HAVE_GLIB_GURI
> + g_autoptr(GUri) uri = NULL;
> + g_autoptr(GHashTable) params = NULL;
> + g_autoptr(GError) err = NULL;
> +
> + uri = g_uri_parse(filename, G_URI_FLAGS_ENCODED_QUERY, &err);
> + if (!uri) {
> + error_report("Failed to parse NBD URI: %s", err->message);
> + return -EINVAL;
> + }
> +
> + p = g_uri_get_path(uri);
> + scheme = g_uri_get_scheme(uri);
> + server = g_uri_get_host(uri);
> + port = g_uri_get_port(uri);
I would have expected this code to fail to compile as we're setting
GLIB_VERSION_MAX_ALLOWED == GLIB_VERSION_2_48 and GUri is tagged
as newer than that.
In any case, having this conditonal code in all callers is definitely
not a desirable approach. If we want to use it, then I think we need to
pull a copy of GUri into QEMU and expose it via glib-compat.h, so that
callers can use it unconditionally.
Regards,
Daniel
--
|: https://berrange.com -o- https://www.flickr.com/photos/dberrange :|
|: https://libvirt.org -o- https://fstop138.berrange.com :|
|: https://entangle-photo.org -o- https://www.instagram.com/dberrange :|
- [PATCH 01/13] uri: add g_auto macros for URI & QueryParams, (continued)
- [PATCH 01/13] uri: add g_auto macros for URI & QueryParams, Marc-André Lureau, 2020/07/09
- [PATCH 02/13] block/nbd: auto-ify URI parsing variables, Marc-André Lureau, 2020/07/09
- [PATCH 03/13] block/vxhs: auto-ify URI parsing variables, Marc-André Lureau, 2020/07/09
- [PATCH 04/13] block/sheepdog: auto-ify URI parsing variables, Marc-André Lureau, 2020/07/09
- [PATCH 05/13] block/ssh: auto-ify URI parsing variables, Marc-André Lureau, 2020/07/09
- [PATCH 06/13] block/nfs: auto-ify URI parsing variables, Marc-André Lureau, 2020/07/09
- [PATCH 07/13] block/gluster: auto-ify URI parsing variables, Marc-André Lureau, 2020/07/09
- [PATCH 08/13] build-sys: add HAVE_GLIB_GURI, Marc-André Lureau, 2020/07/09
- [PATCH 09/13] nbd: add GUri-based URI parsing version, Marc-André Lureau, 2020/07/09
- Re: [PATCH 09/13] nbd: add GUri-based URI parsing version,
Daniel P . Berrangé <=
- [PATCH 10/13] sheepdog: add GUri-based URI parsing, Marc-André Lureau, 2020/07/09
- [PATCH 11/13] nfs: add GUri-based URI parsing, Marc-André Lureau, 2020/07/09
- [PATCH 12/13] gluster: add GUri-based URI parsing, Marc-André Lureau, 2020/07/09
- [PATCH 13/13] ssh: add GUri-based URI parsing, Marc-André Lureau, 2020/07/09