We are gradually converting to byte-based interfaces, as they are easier to reason about than sector-based. Continue by converting the public interface to backup jobs (no semantic change), including a change to CowRequest to track by bytes instead of cluster indices. Note that this does not change the difference between the public interface (starting point, and size of the subsequent range) and the internal interface (starting and end points). Signed-off-by: Eric Blake <eblake@redhat.com> Reviewed-by: John Snow <jsnow@redhat.com> Reviewed-by: Xie Changlong <xiechanglong@cmss.chinamobile.com> Reviewed-by: Jeff Cody <jcody@redhat.com> Reviewed-by: Kevin Wolf <kwolf@redhat.com> Signed-off-by: Kevin Wolf <kwolf@redhat.com>
39 lines
1 KiB
C
39 lines
1 KiB
C
/*
|
|
* QEMU backup
|
|
*
|
|
* Copyright (c) 2013 Proxmox Server Solutions
|
|
* Copyright (c) 2016 HUAWEI TECHNOLOGIES CO., LTD.
|
|
* Copyright (c) 2016 Intel Corporation
|
|
* Copyright (c) 2016 FUJITSU LIMITED
|
|
*
|
|
* Authors:
|
|
* Dietmar Maurer <dietmar@proxmox.com>
|
|
* Changlong Xie <xiecl.fnst@cn.fujitsu.com>
|
|
*
|
|
* This work is licensed under the terms of the GNU GPL, version 2 or later.
|
|
* See the COPYING file in the top-level directory.
|
|
*
|
|
*/
|
|
|
|
#ifndef BLOCK_BACKUP_H
|
|
#define BLOCK_BACKUP_H
|
|
|
|
#include "block/block_int.h"
|
|
|
|
typedef struct CowRequest {
|
|
int64_t start_byte;
|
|
int64_t end_byte;
|
|
QLIST_ENTRY(CowRequest) list;
|
|
CoQueue wait_queue; /* coroutines blocked on this request */
|
|
} CowRequest;
|
|
|
|
void backup_wait_for_overlapping_requests(BlockJob *job, int64_t offset,
|
|
uint64_t bytes);
|
|
void backup_cow_request_begin(CowRequest *req, BlockJob *job,
|
|
int64_t offset, uint64_t bytes);
|
|
void backup_cow_request_end(CowRequest *req);
|
|
|
|
void backup_do_checkpoint(BlockJob *job, Error **errp);
|
|
|
|
#endif
|