[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: [Qemu-devel] [PATCH v24 03/12] Backup: export interfaces for extra s
From: |
Stefan Hajnoczi |
Subject: |
Re: [Qemu-devel] [PATCH v24 03/12] Backup: export interfaces for extra serialization |
Date: |
Thu, 4 Aug 2016 10:53:50 +0100 |
User-agent: |
Mutt/1.6.2 (2016-07-01) |
On Wed, Jul 27, 2016 at 03:01:44PM +0800, Changlong Xie wrote:
> Normal backup(sync='none') workflow:
> step 1. NBD peformance I/O write from client to server
> qcow2_co_writev
> bdrv_co_writev
> ...
> bdrv_aligned_pwritev
> notifier_with_return_list_notify -> backup_do_cow
> bdrv_driver_pwritev // write new contents
>
> step 2. drive-backup sync=none
> backup_do_cow
> {
> wait_for_overlapping_requests
> cow_request_begin
> for(; start < end; start++) {
> bdrv_co_readv_no_serialising //read old contents from Secondary
> disk
> bdrv_co_writev // write old contents to hidden-disk
> }
> cow_request_end
> }
>
> step 3. Then roll back to "step 1" to write new contents to Secondary disk.
>
> And for replication, we must make sure that we only read the old contents from
> Secondary disk in order to keep contents consistent.
>
> 1) Replication workflow of Secondary
> virtio-blk
> ^
> -------> 1 NBD |
> || server 3 replication
> || ^ ^
> || | backing backing |
> || Secondary disk 6<-------- hidden-disk 5 <-------- active-disk 4
> || | ^
> || '-------------------------'
> || drive-backup sync=none 2
>
> Hence, we need these interfaces to implement coarse-grained serialization
> between
> COW of Secondary disk and the read operation of replication.
>
> Example codes about how to use them:
>
> *#include "block/block_backup.h"
>
> static coroutine_fn int xxx_co_readv()
> {
> CowRequest req;
> BlockJob *job = secondary_disk->bs->job;
>
> if (job) {
> backup_wait_for_overlapping_requests(job, start, end);
> backup_cow_request_begin(&req, job, start, end);
> ret = bdrv_co_readv();
> backup_cow_request_end(&req);
> goto out;
> }
> ret = bdrv_co_readv();
> out:
> return ret;
> }
>
> Signed-off-by: Changlong Xie <address@hidden>
> Signed-off-by: Wen Congyang <address@hidden>
> Signed-off-by: Wang WeiWei <address@hidden>
> ---
> block/backup.c | 41 ++++++++++++++++++++++++++++++++++-------
> include/block/block_backup.h | 14 ++++++++++++++
> 2 files changed, 48 insertions(+), 7 deletions(-)
Reviewed-by: Stefan Hajnoczi <address@hidden>
signature.asc
Description: PGP signature
[Prev in Thread] |
Current Thread |
[Next in Thread] |
- Re: [Qemu-devel] [PATCH v24 03/12] Backup: export interfaces for extra serialization,
Stefan Hajnoczi <=