mirror of https://gitlab.com/qemu-project/qemu
f785a5ae36
Current behaviour if a read fails is for the acb to not get finished. This causes an infinite loop in bdrv_read_em (block.c). The read failure never gets reported to the guest and if the error condition clears, the process never recovers. With this patch, when curl reports a failure we finish the acb as a failure. This results in the guest receiving an I/O error (rather than the read hanging indefinitely) and if the error condition subsequently clears, retries work as expected. The simplest test is to put an ISO on a web server you have control over and open it with qemu-io. Then move the ISO out of the way and attempt to read some data - you should see behaviour matching the above. Signed-off-by: Nick Thomas <nick@bytemark.co.uk> Signed-off-by: Kevin Wolf <kwolf@redhat.com> |
||
---|---|---|
.. | ||
blkdebug.c | ||
blkverify.c | ||
bochs.c | ||
cloop.c | ||
cow.c | ||
curl.c | ||
dmg.c | ||
nbd.c | ||
parallels.c | ||
qcow.c | ||
qcow2-cache.c | ||
qcow2-cluster.c | ||
qcow2-refcount.c | ||
qcow2-snapshot.c | ||
qcow2.c | ||
qcow2.h | ||
qed-check.c | ||
qed-cluster.c | ||
qed-gencb.c | ||
qed-l2-cache.c | ||
qed-table.c | ||
qed.c | ||
qed.h | ||
raw-posix-aio.h | ||
raw-posix.c | ||
raw-win32.c | ||
raw.c | ||
rbd.c | ||
sheepdog.c | ||
vdi.c | ||
vmdk.c | ||
vpc.c | ||
vvfat.c |