[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Qemu-block] [PATCH v24 02/12] Backup: clear all bitmap when doing block
From: |
Changlong Xie |
Subject: |
[Qemu-block] [PATCH v24 02/12] Backup: clear all bitmap when doing block checkpoint |
Date: |
Wed, 27 Jul 2016 15:01:43 +0800 |
From: Wen Congyang <address@hidden>
Signed-off-by: Wen Congyang <address@hidden>
Signed-off-by: Changlong Xie <address@hidden>
Signed-off-by: Wang WeiWei <address@hidden>
Signed-off-by: zhanghailiang <address@hidden>
Signed-off-by: Gonglei <address@hidden>
---
block/backup.c | 18 ++++++++++++++++++
include/block/block_backup.h | 25 +++++++++++++++++++++++++
2 files changed, 43 insertions(+)
create mode 100644 include/block/block_backup.h
diff --git a/block/backup.c b/block/backup.c
index 2c05323..3bce416 100644
--- a/block/backup.c
+++ b/block/backup.c
@@ -17,6 +17,7 @@
#include "block/block.h"
#include "block/block_int.h"
#include "block/blockjob.h"
+#include "block/block_backup.h"
#include "qapi/error.h"
#include "qapi/qmp/qerror.h"
#include "qemu/ratelimit.h"
@@ -253,6 +254,23 @@ static void backup_attached_aio_context(BlockJob *job,
AioContext *aio_context)
blk_set_aio_context(s->target, aio_context);
}
+void backup_do_checkpoint(BlockJob *job, Error **errp)
+{
+ BackupBlockJob *backup_job = container_of(job, BackupBlockJob, common);
+ int64_t len;
+
+ assert(job->driver->job_type == BLOCK_JOB_TYPE_BACKUP);
+
+ if (backup_job->sync_mode != MIRROR_SYNC_MODE_NONE) {
+ error_setg(errp, "The backup job only supports block checkpoint in"
+ " sync=none mode");
+ return;
+ }
+
+ len = DIV_ROUND_UP(backup_job->common.len, backup_job->cluster_size);
+ bitmap_zero(backup_job->done_bitmap, len);
+}
+
static const BlockJobDriver backup_job_driver = {
.instance_size = sizeof(BackupBlockJob),
.job_type = BLOCK_JOB_TYPE_BACKUP,
diff --git a/include/block/block_backup.h b/include/block/block_backup.h
new file mode 100644
index 0000000..157596c
--- /dev/null
+++ b/include/block/block_backup.h
@@ -0,0 +1,25 @@
+/*
+ * 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 <address@hidden>
+ * Changlong Xie <address@hidden>
+ *
+ * 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"
+
+void backup_do_checkpoint(BlockJob *job, Error **errp);
+
+#endif
--
1.9.3
- [Qemu-block] [PATCH v24 00/12] Block replication for continuous checkpoints, Changlong Xie, 2016/07/27
- [Qemu-block] [PATCH v24 01/12] unblock backup operations in backing file, Changlong Xie, 2016/07/27
- [Qemu-block] [PATCH v24 04/12] Link backup into block core, Changlong Xie, 2016/07/27
- [Qemu-block] [PATCH v24 02/12] Backup: clear all bitmap when doing block checkpoint,
Changlong Xie <=
- [Qemu-block] [PATCH v24 06/12] auto complete active commit, Changlong Xie, 2016/07/27
- [Qemu-block] [PATCH v24 03/12] Backup: export interfaces for extra serialization, Changlong Xie, 2016/07/27
- [Qemu-block] [PATCH v24 07/12] configure: support replication, Changlong Xie, 2016/07/27
- [Qemu-block] [PATCH v24 05/12] docs: block replication's description, Changlong Xie, 2016/07/27
- [Qemu-block] [PATCH v24 11/12] support replication driver in blockdev-add, Changlong Xie, 2016/07/27
- [Qemu-block] [PATCH v24 08/12] Introduce new APIs to do replication operation, Changlong Xie, 2016/07/27
- [Qemu-block] [PATCH v24 12/12] MAINTAINERS: add maintainer for replication, Changlong Xie, 2016/07/27
- [Qemu-block] [PATCH v24 10/12] tests: add unit test case for replication, Changlong Xie, 2016/07/27
- [Qemu-block] [PATCH v24 09/12] Implement new driver for block replication, Changlong Xie, 2016/07/27