The per-(virtual)-device ring between the guest and the block backend
supports two messages:
- Read data from the specified block
device. The front end identifies the device and location to read
from and attaches pages for the data to be copied to (typically via
DMA from the device). The backend acknowledges completed read
requests as they finish.
- Write data to the specified block
device. This functions essentially as READ, except
that the data moves to the device instead of from it.