]> git.proxmox.com Git - qemu.git/blob - backup.h
vma: implement experimental nbd server
[qemu.git] / backup.h
1 /*
2 * QEMU backup related definitions
3 *
4 * Copyright (C) 2013 Proxmox Server Solutions
5 *
6 * Authors:
7 * Dietmar Maurer (dietmar@proxmox.com)
8 *
9 * This work is licensed under the terms of the GNU GPL, version 2 or later.
10 * See the COPYING file in the top-level directory.
11 *
12 */
13
14 #ifndef QEMU_BACKUP_H
15 #define QEMU_BACKUP_H
16
17 #include <uuid/uuid.h>
18 #include "block/block.h"
19
20 #define BACKUP_CLUSTER_BITS 16
21 #define BACKUP_CLUSTER_SIZE (1<<BACKUP_CLUSTER_BITS)
22 #define BACKUP_BLOCKS_PER_CLUSTER (BACKUP_CLUSTER_SIZE/BDRV_SECTOR_SIZE)
23
24 typedef int BackupDumpFunc(void *opaque, BlockDriverState *bs,
25 int64_t cluster_num, unsigned char *buf);
26
27 void backup_job_start(BlockDriverState *bs, bool cancel);
28
29 int backup_job_create(BlockDriverState *bs, BackupDumpFunc *backup_dump_cb,
30 BlockDriverCompletionFunc *backup_complete_cb,
31 void *opaque, int64_t speed);
32
33 typedef struct BackupDriver {
34 const char *format;
35 void *(*open)(const char *filename, uuid_t uuid, Error **errp);
36 int (*close)(void *opaque, Error **errp);
37 int (*register_config)(void *opaque, const char *name, gpointer data,
38 size_t data_len);
39 int (*register_stream)(void *opaque, const char *devname, size_t size);
40 int (*dump)(void *opaque, uint8_t dev_id, int64_t cluster_num,
41 unsigned char *buf, size_t *zero_bytes);
42 int (*complete)(void *opaque, uint8_t dev_id, int ret);
43 } BackupDriver;
44
45 #endif /* QEMU_BACKUP_H */