[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Qemu-block] [RFC PATCH 05/33] blockjob: Add block_job_driver()
From: |
Kevin Wolf |
Subject: |
[Qemu-block] [RFC PATCH 05/33] blockjob: Add block_job_driver() |
Date: |
Tue, 24 Apr 2018 17:24:47 +0200 |
The backup block job directly accesses the driver field in BlockJob. Add
a wrapper for getting it.
Signed-off-by: Kevin Wolf <address@hidden>
---
include/block/blockjob.h | 7 +++++++
block/backup.c | 8 +++++---
blockjob.c | 5 +++++
3 files changed, 17 insertions(+), 3 deletions(-)
diff --git a/include/block/blockjob.h b/include/block/blockjob.h
index 5aa8a6aaec..0b57d53084 100644
--- a/include/block/blockjob.h
+++ b/include/block/blockjob.h
@@ -452,4 +452,11 @@ void block_job_txn_add_job(BlockJobTxn *txn, BlockJob
*job);
*/
bool block_job_is_internal(BlockJob *job);
+/**
+ * block_job_driver:
+ *
+ * Returns the driver associated with a block job.
+ */
+const BlockJobDriver *block_job_driver(BlockJob *job);
+
#endif
diff --git a/block/backup.c b/block/backup.c
index 3f3ec6e408..1bc164d8ee 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);
diff --git a/blockjob.c b/blockjob.c
index 31130d87cc..42e34aa704 100644
--- a/blockjob.c
+++ b/blockjob.c
@@ -359,6 +359,11 @@ static bool block_job_started(BlockJob *job)
return job->co;
}
+const BlockJobDriver *block_job_driver(BlockJob *job)
+{
+ return job->driver;
+}
+
/**
* All jobs must allow a pause point before entering their job proper. This
* ensures that jobs can be paused prior to being started, then resumed later.
--
2.13.6
- [Qemu-block] [RFC PATCH 00/33] Generic background jobs, Kevin Wolf, 2018/04/24
- [Qemu-block] [RFC PATCH 01/33] blockjob: Wrappers for progress counter access, Kevin Wolf, 2018/04/24
- [Qemu-block] [RFC PATCH 02/33] blockjob: Move RateLimit to BlockJob, Kevin Wolf, 2018/04/24
- [Qemu-block] [RFC PATCH 03/33] blockjob: Implement block_job_set_speed() centrally, Kevin Wolf, 2018/04/24
- [Qemu-block] [RFC PATCH 04/33] blockjob: Introduce block_job_ratelimit_get_delay(), Kevin Wolf, 2018/04/24
- [Qemu-block] [RFC PATCH 05/33] blockjob: Add block_job_driver(),
Kevin Wolf <=
- [Qemu-block] [RFC PATCH 06/33] blockjob: Remove block_job_pause/resume_all(), Kevin Wolf, 2018/04/24
- [Qemu-block] [RFC PATCH 10/33] job: Add job_delete(), Kevin Wolf, 2018/04/24
- [Qemu-block] [RFC PATCH 09/33] job: Add JobDriver.job_type, Kevin Wolf, 2018/04/24
- [Qemu-block] [RFC PATCH 08/33] job: Rename BlockJobType into JobType, Kevin Wolf, 2018/04/24
- [Qemu-block] [RFC PATCH 11/33] job: Maintain a list of all jobs, Kevin Wolf, 2018/04/24
- [Qemu-block] [RFC PATCH 07/33] job: Create Job, JobDriver and job_create(), Kevin Wolf, 2018/04/24
- [Qemu-block] [RFC PATCH 15/33] job: Add Job.aio_context, Kevin Wolf, 2018/04/24