[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: [Qemu-block] [PATCH 07/15] sheepdog: Report errors in pseudo-filenam
From: |
Kevin Wolf |
Subject: |
Re: [Qemu-block] [PATCH 07/15] sheepdog: Report errors in pseudo-filename more usefully |
Date: |
Fri, 3 Mar 2017 14:49:30 +0100 |
User-agent: |
Mutt/1.5.21 (2010-09-15) |
Am 02.03.2017 um 22:43 hat Markus Armbruster geschrieben:
> Errors in the pseudo-filename are all reported with the same laconic
> "Can't parse filename" message.
>
> Add real error reporting, such as:
>
> $ qemu-system-x86_64 --drive driver=sheepdog,filename=sheepdog:///
> qemu-system-x86_64: --drive driver=sheepdog,filename=sheepdog:///:
> missing file path in URI
> $ qemu-system-x86_64 --drive driver=sheepdog,filename=sheepgod:///vdi
> qemu-system-x86_64: --drive driver=sheepdog,filename=sheepgod:///vdi: URI
> scheme must be 'sheepdog', 'sheepdog+tcp', or 'sheepdog+unix'
> $ qemu-system-x86_64 --drive
> driver=sheepdog,filename=sheepdog+unix:///vdi?socke=sheepdog.sock
> qemu-system-x86_64: --drive
> driver=sheepdog,filename=sheepdog+unix:///vdi?socke=sheepdog.sock: unexpected
> query parameters
>
> The code to translate legacy syntax to URI fails to escape URI
> meta-characters. The new error messages are misleading then. Replace
> them by the old "Can't parse filename" message. "Internal error"
> would be more honest. Anyway, no worse than before. Also add a FIXME
> comment.
>
> Signed-off-by: Markus Armbruster <address@hidden>
> @@ -1451,12 +1480,12 @@ static int sd_open(BlockDriverState *bs, QDict
> *options, int flags,
> memset(tag, 0, sizeof(tag));
>
> if (strstr(filename, "://")) {
> - ret = sd_parse_uri(s, filename, vdi, &snapid, tag);
> + sd_parse_uri(s, filename, vdi, &snapid, tag, &local_err);
> } else {
> - ret = parse_vdiname(s, filename, vdi, &snapid, tag);
> + parse_vdiname(s, filename, vdi, &snapid, tag, &local_err);
> }
> - if (ret < 0) {
> - error_setg(errp, "Can't parse filename");
> + if (local_err) {
> + error_propagate(errp, local_err);
> goto out_no_fd;
> }
I have to take my R-b back, ret isn't set here any more:
block/sheepdog.c: In function 'sd_open':
block/sheepdog.c:1451:9: error: 'ret' may be used uninitialized in this
function [-Werror=maybe-uninitialized]
int ret, fd;
Kevin
- Re: [Qemu-block] [Qemu-devel] [PATCH 02/15] sheepdog: Fix error handling in sd_snapshot_delete(), (continued)
- [Qemu-block] [PATCH 05/15] sheepdog: Fix snapshot ID parsing in _open(), _create, _goto(), Markus Armbruster, 2017/03/02
- [Qemu-block] [PATCH 07/15] sheepdog: Report errors in pseudo-filename more usefully, Markus Armbruster, 2017/03/02
- [Qemu-block] [PATCH 11/15] gluster: Don't duplicate qapi-util.c's qapi_enum_parse(), Markus Armbruster, 2017/03/02
- [Qemu-block] [PATCH 10/15] gluster: Drop assumptions on SocketTransport names, Markus Armbruster, 2017/03/02
- [Qemu-block] [PATCH 01/15] sheepdog: Defuse time bomb in sd_open() error handling, Markus Armbruster, 2017/03/02
- [Qemu-block] [PATCH 08/15] sheepdog: Use SocketAddress and socket_connect(), Markus Armbruster, 2017/03/02