Am 13.10.2011 22:09, schrieb Stefan Hajnoczi: > Now that the block layer processes requests in coroutine context, some of the > emulation wrappers and duplicate code paths can be dropped. Paraphrasing a > wise man, Arnold Schwarzenegger, "I will go to the block layer and I will > clean > house" :). > > They key thing behind this series is that the block layer processes requests > in > coroutine context and will try to use .brdv_co_readv()/.bdrv_co_writev() when > possible. Should the BlockDriver not implement those interfaces, an emulation > function will be used to provide them using aio. If the BlockDriver does not > implement aio interfaces, then an emulation function will be used to provide > them using synchronous I/O. > > This means: > > 1. A BlockDriver that implements coroutine interfaces does not need to > implement aio or synchronous interfaces. > > 2. A BlockDriver that implements aio interfaces does not need to implement > synchronous interfaces. > > 3. Coroutine interfaces are preferred and do not require any emulation > functions. > > This patch series propagates these rules across existing BlockDrivers and > removes unused emulation functions from block.c. > > Stefan Hajnoczi (5): > block: drop emulation functions that use coroutines > raw-posix: remove bdrv_read()/bdrv_write() > block: use coroutine interface for raw format > block: drop .bdrv_read()/.bdrv_write() emulation > block: drop bdrv_has_async_rw()
Thanks, applied all to the block branch. > block.c | 142 ++------------------------- > block/raw-posix.c | 277 > ----------------------------------------------------- > block/raw.c | 32 ++----- > 3 files changed, 18 insertions(+), 433 deletions(-) Awesome. We need more series like this! :-) Kevin