ToDo/Block/old
QEMU 1.0
Coroutines in the block layer [Kevin]
- Programming model to simplify block drivers without blocking QEMU threads
- All synchronous drivers converted to asynchronous
VMDK enhancements [Fam, GSoC 2011]
- Implement latest VMDK specs to support modern image files
- Patches currently being reviewed and merged
iSCSI block device integration
- Enable userspace-only remote access to disk images
QEMU 1.1
Generic copy-on-read [Stefan]
- Populate image file to avoid fetching same block from backing file again later
Generic image streaming [Stefan]
- Make block_stream commands available for all image formats that support backing files
Block I/O limits [Zhi Yong]
- Resource control for guest I/O bandwidth/iops consumption
- Usable with virtio on QEMU 1.0
snapshot_blkdev and Backup API [Jeff]
- Support for consistent disk snapshots
NBD asynchronous I/O [Paolo]
- Improved performance
virtio-scsi [Paolo/Stefan]
- The next step after virtio-blk, full SCSI command set and appears as SCSI HBA in guest
- Real /dev/sda devices in guest
- No more modifying guest drivers to add simple storage protocol features
Material for next QEMU release
Live block operations [Paolo]
- Copy the contents of an image file while a guest is using it
- Various implementations: active/synchronous (guest sees I/O completion when data reaches both source and destination), passive/asynchronous (guest sees I/O completion when data reaches source only)
- Improved error handling, similar to -drive rerror/werror
- Errors can pause or cancel the job (with possibly separate handling for ENOSPC)
In-place qcow2 <-> qed conversion [Devin, GSoC 2011]:
- Fast conversion between qcow2 and qed image formats without copy all data
- Patches currently being reviewed and merged
Runtime WCE toggling [Paolo, mst?]
- wce=none|on|off and run-time guest toggling support
- Is wce=... an option for guest devices or block devices?
- Easy for IDE, little harder for virtio, somewhat harder for SCSI (MODE SELECT)
- Prerequisite to switching away from cache=writethrough by default
- Idea: replace O_DSYNC with manual bdrv_flush calls after each write
- Possible to get some speedups on qcow2 metadata updates too (certainly with respect to O_SYNC; not sure how much with O_DSYNC)
Block migration [Juan?]
- Block migration working with a separate migration thread
- Perhaps just drop it.
IDE CD-ROM passthrough [Paolo/Markus?]
- Track host tray state
Unified request object
- Unify BdrvTrackedRequest, RwCo etc. in a single struct.
- Perhaps expose make_request to device models and do_request to drivers to allow specifying more flags (FUA, write zeros,...)
Future changes
Cow overlay [Dong Xu "Robert"]
- Allow live block copy and image streaming to raw destination files
-blockdev [Markus?]
- Explicit user control over block device trees
- Perhaps base this on QEMU Object Model right away
QCOW3 [Kevin]
- Extend qcow2 format to address current and future image format challenges
- Feature bits for fine-grained file format extensions
- Sub-clusters to reduce metadata size and fragmentation
- Zero clusters for efficient sparse images and copy-on-read
- luks-like key scheme that allows changing passphrase without re-encrypting data
NBD server for block device migration [Stefan?]
- Enable remote access to live disk images for external backup software
Avoid blocking QEMU threads
- Today loss of NFS connectivity can hang guests
- It's critical never to block the vcpu thread
- The iothread should also not block while the qemu mutex is held
- All blocking operations must be done asynchronously or in a worker thread
tcm_vhost [Zhi Yong]
- Directly connect virtio-scsi with Linux in-kernel SCSI target
- Pass-through of host SCSI devices
qcow2 online resize [Zhi Yong]
- Handle snapshots
- Support shrinking
qed online resize [Zhi Yong]
- Support shrinking