ToDo/Block

From QEMU

This page contains block layer and storage features that have been proposed. These features may not be in active development and questions about them should be addressed to the QEMU mailing list at qemu-devel@nongnu.org.

Core block layer

  • Implement request cancellation in block/io_uring.c and util/thread-pool.c so that device reset and guest cancel commands promptly cancel hung requests. Today QEMU waits for requests to complete. Linux io_uring offers a cancel command that may be able to abort hung NFS requests (the liburing API is io_uring_prep_cancel()). QEMU's thread pool could be extended to use a signal to interrupt blocking system calls. Linux AIO does not seem to offer useful cancel semantics because only drivers/usb/gadget/ implements the kernel's kiocb_set_cancel_fn() API.

virtio-blk

  • Add a cancel command to the virtio-blk device so that running requests can be aborted. This requires changing the VIRTIO spec, extending QEMU's device emulation, and implementing blk_mq_ops->timeout() in Linux virtio_blk.ko. This task depends on first implementing real request cancellation in QEMU.

Old