[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: [Qemu-devel] [PATCH 01/15] qemu coroutine: support bypass mode
From: |
Paolo Bonzini |
Subject: |
Re: [Qemu-devel] [PATCH 01/15] qemu coroutine: support bypass mode |
Date: |
Thu, 31 Jul 2014 12:45:06 +0200 |
User-agent: |
Mozilla/5.0 (X11; Linux x86_64; rv:24.0) Gecko/20100101 Thunderbird/24.6.0 |
Il 31/07/2014 11:47, Ming Lei ha scritto:
>> Block mirroring of a device for example is done using coroutines.
>> As block mirroring can be done on a raw device you need coroutines.
>
> If block layer knows the mirroring is in-progress, it still can enable
> coroutine by ignoring bypass coroutine, or just let device disable
> bypass coroutine in case of mirroring, and the current APIs are very
> flexible.
What matters is not whether you're mirroring. What matters is whether
you're calling bdrv_aio_readv/writev or bdrv_co_readv/writev. Under
some limitation, if you are calling bdrv_aio_readv/writev you can bypass
coroutines. (In fact drive mirroring uses those APIs too so it doesn't
need coroutines and can benefit from the speedup too. :) But
drive-backup does need them).
The limitations are essentially "would bdrv_co_do_preadv or
bdrv_co_do_pwritev do anything special?" This means for example for
bdrv_co_do_pwritev:
- bs->drv must be non-NULL
- bs->read_only must be false
- bdrv_check_byte_request(bs, offset, bytes) must return false
- bs->io_limits_enabled must be false
- the request must be aligned
- (in bdrv_aligned_pwritev) the before_write_notifiers must be empty
- (in bdrv_aligned_pwritev) bs->detect_zeroes must be off
- (in bdrv_aligned_pwritev) the BDRV_REQ_ZERO_WRITE flag must be off
- (in bdrv_aligned_pwritev) bs->enable_write_cache must be false
and the hard part is organizing the code so that the code duplication is
as limited as possible.
Paolo
- [Qemu-devel] [PATCH 00/14] dataplane: optimization and multi virtqueue support, Ming Lei, 2014/07/30
- [Qemu-devel] [PATCH 01/15] qemu coroutine: support bypass mode, Ming Lei, 2014/07/30
- Re: [Qemu-devel] [PATCH 01/15] qemu coroutine: support bypass mode, Paolo Bonzini, 2014/07/30
- Re: [Qemu-devel] [PATCH 01/15] qemu coroutine: support bypass mode, Ming Lei, 2014/07/30
- Re: [Qemu-devel] [PATCH 01/15] qemu coroutine: support bypass mode, Paolo Bonzini, 2014/07/30
- Re: [Qemu-devel] [PATCH 01/15] qemu coroutine: support bypass mode, Ming Lei, 2014/07/30
- Re: [Qemu-devel] [PATCH 01/15] qemu coroutine: support bypass mode, BenoƮt Canet, 2014/07/31
- Re: [Qemu-devel] [PATCH 01/15] qemu coroutine: support bypass mode, Ming Lei, 2014/07/31
- Re: [Qemu-devel] [PATCH 01/15] qemu coroutine: support bypass mode,
Paolo Bonzini <=
- Re: [Qemu-devel] [PATCH 01/15] qemu coroutine: support bypass mode, Ming Lei, 2014/07/31
- Re: [Qemu-devel] [PATCH 01/15] qemu coroutine: support bypass mode, Paolo Bonzini, 2014/07/31
- Re: [Qemu-devel] [PATCH 01/15] qemu coroutine: support bypass mode, Ming Lei, 2014/07/31
- Re: [Qemu-devel] [PATCH 01/15] qemu coroutine: support bypass mode, Ming Lei, 2014/07/31
- Re: [Qemu-devel] [PATCH 01/15] qemu coroutine: support bypass mode, Paolo Bonzini, 2014/07/31
- Re: [Qemu-devel] [PATCH 01/15] qemu coroutine: support bypass mode, Ming Lei, 2014/07/31
[Qemu-devel] [PATCH 02/15] qemu aio: prepare for supporting selective bypass coroutine, Ming Lei, 2014/07/30
[Qemu-devel] [PATCH 03/15] block: support to bypass qemu coroutinue, Ming Lei, 2014/07/30
[Qemu-devel] [PATCH 04/15] Revert "raw-posix: drop raw_get_aio_fd() since it is no longer used", Ming Lei, 2014/07/30
[Qemu-devel] [PATCH 05/15] dataplane: enable selective bypassing coroutine, Ming Lei, 2014/07/30