From: Wen Congyang <we...@cn.fujitsu.com> Signed-off-by: Wen Congyang <we...@cn.fujitsu.com> Signed-off-by: zhanghailiang <zhang.zhanghaili...@huawei.com> Signed-off-by: Gonglei <arei.gong...@huawei.com> Signed-off-by: Changlong Xie <xiecl.f...@cn.fujitsu.com> --- block/backup.c | 17 +++++++++++++++++ include/block/block_int.h | 2 ++ 2 files changed, 19 insertions(+)
diff --git a/block/backup.c b/block/backup.c index 491fd14..d5ffc32 100644 --- a/block/backup.c +++ b/block/backup.c @@ -259,6 +259,23 @@ static void backup_abort(BlockJob *job) } } +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_int.h b/include/block/block_int.h index 7e238a0..3c3caa7 100644 --- a/include/block/block_int.h +++ b/include/block/block_int.h @@ -718,6 +718,8 @@ BdrvChild *bdrv_root_attach_child(BlockDriverState *child_bs, const BdrvChildRole *child_role); void bdrv_root_unref_child(BdrvChild *child); +void backup_do_checkpoint(BlockJob *job, Error **errp); + void blk_dev_change_media_cb(BlockBackend *blk, bool load); bool blk_dev_has_removable_media(BlockBackend *blk); bool blk_dev_has_tray(BlockBackend *blk); -- 1.9.3