xref: /openbmc/qemu/include/block/block_backup.h (revision 80adf54e)
1 /*
2  * QEMU backup
3  *
4  * Copyright (c) 2013 Proxmox Server Solutions
5  * Copyright (c) 2016 HUAWEI TECHNOLOGIES CO., LTD.
6  * Copyright (c) 2016 Intel Corporation
7  * Copyright (c) 2016 FUJITSU LIMITED
8  *
9  * Authors:
10  *  Dietmar Maurer <dietmar@proxmox.com>
11  *  Changlong Xie <xiecl.fnst@cn.fujitsu.com>
12  *
13  * This work is licensed under the terms of the GNU GPL, version 2 or later.
14  * See the COPYING file in the top-level directory.
15  *
16  */
17 
18 #ifndef BLOCK_BACKUP_H
19 #define BLOCK_BACKUP_H
20 
21 #include "block/block_int.h"
22 
23 typedef struct CowRequest {
24     int64_t start_byte;
25     int64_t end_byte;
26     QLIST_ENTRY(CowRequest) list;
27     CoQueue wait_queue; /* coroutines blocked on this request */
28 } CowRequest;
29 
30 void backup_wait_for_overlapping_requests(BlockJob *job, int64_t offset,
31                                           uint64_t bytes);
32 void backup_cow_request_begin(CowRequest *req, BlockJob *job,
33                               int64_t offset, uint64_t bytes);
34 void backup_cow_request_end(CowRequest *req);
35 
36 void backup_do_checkpoint(BlockJob *job, Error **errp);
37 
38 #endif
39