[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: [Qemu-devel] [PATCH 07/15] sheepdog: Report errors in pseudo-filenam
From: |
Markus Armbruster |
Subject: |
Re: [Qemu-devel] [PATCH 07/15] sheepdog: Report errors in pseudo-filename more usefully |
Date: |
Fri, 03 Mar 2017 15:57:02 +0100 |
User-agent: |
Gnus/5.13 (Gnus v5.13) Emacs/25.1 (gnu/linux) |
Kevin Wolf <address@hidden> writes:
> 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;
Healed in PATCH 09, but of course I'll fix it anyway.