On Thu, Oct 6, 2011 at 12:17 AM, Stefan Hajnoczi <stefa...@linux.vnet.ibm.com> wrote: > Block layer features like dirty block tracing, I/O throttling, and live block > copy are forced to duplicate code due to the three different interfaces: > synchronous, asynchronous, and coroutines. > > Since there are bdrv_read(), bdrv_aio_readv(), and bdrv_co_readv() interfaces > for read (and similar for write), per-request processing needs to be > duplicated > for each of these execution contexts. For example, dirty block tracking code > is duplicated across these three interfaces. > > This patch series unifies request processing so that there is only one code > path. I see this as a prerequisite to the live block copy (image streaming) > code I am working on, so I'm pushing it now. > > The short-term win from this series is that it becomes easy to add live block > copy and other features. We now have a single code path where the > perf-request > processing is done. > > The longer-term win will be dropping the BlockDriver .bdrv_read(), > .bdrv_write(), .bdrv_aio_readv(), and .bdrv_aio_writev() interfaces. By doing > that we can bring all BlockDrivers onto a common interface, namely > .bdrv_co_readv() and .bdrv_co_writev(). It will also allow us to drop most of > the sync and aio emulation code. > > A consequence of this patch series is that every I/O request goes through at > least one coroutine. There is no longer a direct .bdrv_read(), .bdrv_write(), > .bdrv_aio_readv(), or .bdrv_aio_writev() call - we're trying to phase out > those > interfaces. I have not noticed performance degradation in correctness tests > but we need to confirm that there has not been a performance regression. > > Stefan Hajnoczi (6): > block: directly invoke .bdrv_aio_*() in bdrv_co_io_em() > block: split out bdrv_co_do_readv() and bdrv_co_do_writev() > block: switch bdrv_read()/bdrv_write() to coroutines > block: switch bdrv_aio_readv() to coroutines > block: mark blocks dirty on coroutine write completion > block: switch bdrv_aio_writev() to coroutines > > block.c | 273 > +++++++++++++++++++++++++++++++-------------------------------- > 1 files changed, 134 insertions(+), 139 deletions(-) OK. When i am available, i will play with it. > > -- > 1.7.6.3 > > >
-- Regards, Zhi Yong Wu