This series aims at avoiding a hanging main-loop if a vserver has a CDROM image mounted from a NFS share and that NFS share goes down. Typical situation is that users mount an CDROM ISO to install something and then forget to eject that CDROM afterwards. As a consequence this mounted CD is able to bring down the whole vserver if the backend NFS share is unreachable. This is bad especially if the CDROM itself is not needed anymore at this point.
This series aims at fixing 3 blocking I/O operations that would hang if the NFS server is unavailable: - ATAPI PIO read requests used sync calls to blk_read, convert them to an async variant. - If a busmaster DMA request is cancelled all requests are drained. Convert the drain to an async request canceling. - query-block in the HMP or QMP hangs because it indirectly calls bdrv_get_allocated_file_size. Note that Patch 5 is only included for completeness. Peter Peter Lieven (5): ide/atapi: make PIO read requests async ide/atapi: blk_aio_readv may return NULL ide: add support for cancelable read requests ide/atapi: enable cancelable requests block/nfs: cache allocated filesize for read-only files block/nfs.c | 36 ++++++++++++++++++++++++++ hw/ide/atapi.c | 75 +++++++++++++++++++++++++++++++++++-------------------- hw/ide/core.c | 55 ++++++++++++++++++++++++++++++++++++++++ hw/ide/internal.h | 16 ++++++++++++ hw/ide/pci.c | 42 ++++++++++++++++++++----------- 5 files changed, 183 insertions(+), 41 deletions(-) -- 1.9.1