I see. So why not implement this as an ordinary swap device, with aramzswap is exactly this: an ordinary swap device which stores every page
higher priority than the disk device? this way we reuse an API and keep
things asynchronous, instead of introducing a special purpose API.
in (compressed) memory and its enabled as highest priority swap. Currently,
it stores these compressed chunks in guest memory itself but it is not very
difficult to send these chunks out to host/hypervisor using virtio.
However, it suffers from unnecessary block I/O layer overhead and requires
weird hooks in swap code, say to get notification when a swap slot is freed.
OTOH frontswap approach gets rid of any such artifacts and overheads.
(ramzswap: http://code.google.com/p/compcache/)