On 09/21/2015 08:25 AM, Peter Lieven wrote: > 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(-) >
I assume this supersedes both: [Qemu-devel] [PATCH 0/2] ide/atapi: partially avoid deadlock if the storage backend is dead and [Qemu-devel] [PATCH] ide/atapi: make PIO read requests async right? --js