On Wed, Nov 13, 2013 at 08:37:58PM +0100, Max Reitz wrote: > If a block device is unbacked, a streaming blockjob should immediately > finish instead of beginning to try to stream, then noticing the backing > file does not contain even the first sector (since it does not exist) > and then finishing normally. > > Signed-off-by: Max Reitz <mre...@redhat.com> > --- > block/stream.c | 5 +++++ > 1 file changed, 5 insertions(+) > > diff --git a/block/stream.c b/block/stream.c > index 694fd42..46bec7d 100644 > --- a/block/stream.c > +++ b/block/stream.c > @@ -88,6 +88,11 @@ static void coroutine_fn stream_run(void *opaque) > int n = 0; > void *buf; > > + if (!bs->backing_hd) { > + block_job_completed(&s->common, 0); > + return; > + } > +
Thanks for raising this, it's a bug that we don't verify that the image has a backing file. I'd rather return an error that the user attempted to do something pointless. It was a mistake on their part and it helps to bring this to their attention right away. CCing Eric Blake because strictly speaking, adding a error where we previously used to return success breaks API compatibility. Any suggestions (I guess QEMU could just log a warning instead of failing the command)? Stefan