On 08/20/2015 01:14 AM, Peter Lieven wrote: > the blk_drain_all() that is executed if the guest issues a DMA cancel > leads to a stuck main loop if the storage backend (e.g. a NFS share) > is unresponsive. > > This scenario is a common case for CDROM images mounted from an > NFS share. In this case a broken NFS server can take down the > whole VM even if the mounted CDROM is not used and was just not > unmounted after usage. > > This approach avoids the blk_drain_all for read-only media and > cancelles the AIO locally and makes the callback a NOP if the
s/cancelles/cancels/ > original request is completed after the NFS share is responsive > again. > > Signed-off-by: Peter Lieven <p...@kamp.de> > --- > hw/ide/pci.c | 32 ++++++++++++++++++-------------- > 1 file changed, 18 insertions(+), 14 deletions(-) > + if (!bdrv_is_read_only(bm->bus->dma->aiocb->bs)) { > + /* We can't cancel Scatter Gather DMA in the middle of > the > + * operation or a partial (not full) DMA transfer would > + * reach the storage so we wait for completion instead > + * (we beahve like if the DMA was completed by the time > the s/beahve like/behave as/ -- Eric Blake eblake redhat com +1-919-301-3266 Libvirt virtualization library http://libvirt.org
signature.asc
Description: OpenPGP digital signature