Kevin Wolf <kw...@redhat.com> 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 <arm...@redhat.com> > >> @@ -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.