aboutsummaryrefslogtreecommitdiff
path: root/block/backup.c
diff options
context:
space:
mode:
authorKevin Wolf <kwolf@redhat.com>2018-01-19 15:54:40 +0100
committerKevin Wolf <kwolf@redhat.com>2018-05-15 16:11:50 +0200
commitbd21935b50d100d8da8c05cd3c2009f0f3432cb4 (patch)
treea72b8ecf4fc95088942038d0e9da20fa78093e2b /block/backup.c
parentdee81d5111ff0e24ac63ab0dbbd19e84c2f87904 (diff)
downloadqemu-bd21935b50d100d8da8c05cd3c2009f0f3432cb4.zip
qemu-bd21935b50d100d8da8c05cd3c2009f0f3432cb4.tar.gz
qemu-bd21935b50d100d8da8c05cd3c2009f0f3432cb4.tar.bz2
blockjob: Add block_job_driver()
The backup block job directly accesses the driver field in BlockJob. Add a wrapper for getting it. Signed-off-by: Kevin Wolf <kwolf@redhat.com> Reviewed-by: Eric Blake <eblake@redhat.com> Reviewed-by: Max Reitz <mreitz@redhat.com> Reviewed-by: John Snow <jsnow@redhat.com>
Diffstat (limited to 'block/backup.c')
-rw-r--r--block/backup.c8
1 files changed, 5 insertions, 3 deletions
diff --git a/block/backup.c b/block/backup.c
index cfdb6ec..e14d995 100644
--- a/block/backup.c
+++ b/block/backup.c
@@ -47,6 +47,8 @@ typedef struct BackupBlockJob {
HBitmap *copy_bitmap;
} BackupBlockJob;
+static const BlockJobDriver backup_job_driver;
+
/* See if in-flight requests overlap and wait for them to complete */
static void coroutine_fn wait_for_overlapping_requests(BackupBlockJob *job,
int64_t start,
@@ -241,7 +243,7 @@ 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);
+ assert(block_job_driver(job) == &backup_job_driver);
if (backup_job->sync_mode != MIRROR_SYNC_MODE_NONE) {
error_setg(errp, "The backup job only supports block checkpoint in"
@@ -259,7 +261,7 @@ void backup_wait_for_overlapping_requests(BlockJob *job, int64_t offset,
BackupBlockJob *backup_job = container_of(job, BackupBlockJob, common);
int64_t start, end;
- assert(job->driver->job_type == BLOCK_JOB_TYPE_BACKUP);
+ assert(block_job_driver(job) == &backup_job_driver);
start = QEMU_ALIGN_DOWN(offset, backup_job->cluster_size);
end = QEMU_ALIGN_UP(offset + bytes, backup_job->cluster_size);
@@ -272,7 +274,7 @@ void backup_cow_request_begin(CowRequest *req, BlockJob *job,
BackupBlockJob *backup_job = container_of(job, BackupBlockJob, common);
int64_t start, end;
- assert(job->driver->job_type == BLOCK_JOB_TYPE_BACKUP);
+ assert(block_job_driver(job) == &backup_job_driver);
start = QEMU_ALIGN_DOWN(offset, backup_job->cluster_size);
end = QEMU_ALIGN_UP(offset + bytes, backup_job->cluster_size);