Blame SOURCES/kvm-blockjob-Add-block_job_driver.patch

383d26
From a80cabf1e33718c739f131c77b63a31d5cf6f5e1 Mon Sep 17 00:00:00 2001
383d26
From: Kevin Wolf <kwolf@redhat.com>
383d26
Date: Tue, 26 Jun 2018 09:47:56 +0200
383d26
Subject: [PATCH 27/89] blockjob: Add block_job_driver()
383d26
383d26
RH-Author: Kevin Wolf <kwolf@redhat.com>
383d26
Message-id: <20180626094856.6924-14-kwolf@redhat.com>
383d26
Patchwork-id: 81064
383d26
O-Subject: [RHV-7.6 qemu-kvm-rhev PATCH v2 13/73] blockjob: Add block_job_driver()
383d26
Bugzilla: 1513543
383d26
RH-Acked-by: Jeffrey Cody <jcody@redhat.com>
383d26
RH-Acked-by: Max Reitz <mreitz@redhat.com>
383d26
RH-Acked-by: Fam Zheng <famz@redhat.com>
383d26
383d26
The backup block job directly accesses the driver field in BlockJob. Add
383d26
a wrapper for getting it.
383d26
383d26
Signed-off-by: Kevin Wolf <kwolf@redhat.com>
383d26
Reviewed-by: Eric Blake <eblake@redhat.com>
383d26
Reviewed-by: Max Reitz <mreitz@redhat.com>
383d26
Reviewed-by: John Snow <jsnow@redhat.com>
383d26
(cherry picked from commit bd21935b50d100d8da8c05cd3c2009f0f3432cb4)
383d26
Signed-off-by: Kevin Wolf <kwolf@redhat.com>
383d26
Signed-off-by: Miroslav Rezanina <mrezanin@redhat.com>
383d26
---
383d26
 block/backup.c           | 8 +++++---
383d26
 blockjob.c               | 5 +++++
383d26
 include/block/blockjob.h | 7 +++++++
383d26
 3 files changed, 17 insertions(+), 3 deletions(-)
383d26
383d26
diff --git a/block/backup.c b/block/backup.c
383d26
index cfdb6ec..e14d995 100644
383d26
--- a/block/backup.c
383d26
+++ b/block/backup.c
383d26
@@ -47,6 +47,8 @@ typedef struct BackupBlockJob {
383d26
     HBitmap *copy_bitmap;
383d26
 } BackupBlockJob;
383d26
 
383d26
+static const BlockJobDriver backup_job_driver;
383d26
+
383d26
 /* See if in-flight requests overlap and wait for them to complete */
383d26
 static void coroutine_fn wait_for_overlapping_requests(BackupBlockJob *job,
383d26
                                                        int64_t start,
383d26
@@ -241,7 +243,7 @@ void backup_do_checkpoint(BlockJob *job, Error **errp)
383d26
     BackupBlockJob *backup_job = container_of(job, BackupBlockJob, common);
383d26
     int64_t len;
383d26
 
383d26
-    assert(job->driver->job_type == BLOCK_JOB_TYPE_BACKUP);
383d26
+    assert(block_job_driver(job) == &backup_job_driver);
383d26
 
383d26
     if (backup_job->sync_mode != MIRROR_SYNC_MODE_NONE) {
383d26
         error_setg(errp, "The backup job only supports block checkpoint in"
383d26
@@ -259,7 +261,7 @@ void backup_wait_for_overlapping_requests(BlockJob *job, int64_t offset,
383d26
     BackupBlockJob *backup_job = container_of(job, BackupBlockJob, common);
383d26
     int64_t start, end;
383d26
 
383d26
-    assert(job->driver->job_type == BLOCK_JOB_TYPE_BACKUP);
383d26
+    assert(block_job_driver(job) == &backup_job_driver);
383d26
 
383d26
     start = QEMU_ALIGN_DOWN(offset, backup_job->cluster_size);
383d26
     end = QEMU_ALIGN_UP(offset + bytes, backup_job->cluster_size);
383d26
@@ -272,7 +274,7 @@ void backup_cow_request_begin(CowRequest *req, BlockJob *job,
383d26
     BackupBlockJob *backup_job = container_of(job, BackupBlockJob, common);
383d26
     int64_t start, end;
383d26
 
383d26
-    assert(job->driver->job_type == BLOCK_JOB_TYPE_BACKUP);
383d26
+    assert(block_job_driver(job) == &backup_job_driver);
383d26
 
383d26
     start = QEMU_ALIGN_DOWN(offset, backup_job->cluster_size);
383d26
     end = QEMU_ALIGN_UP(offset + bytes, backup_job->cluster_size);
383d26
diff --git a/blockjob.c b/blockjob.c
383d26
index e30f5ec..112672a 100644
383d26
--- a/blockjob.c
383d26
+++ b/blockjob.c
383d26
@@ -373,6 +373,11 @@ static bool block_job_started(BlockJob *job)
383d26
     return job->co;
383d26
 }
383d26
 
383d26
+const BlockJobDriver *block_job_driver(BlockJob *job)
383d26
+{
383d26
+    return job->driver;
383d26
+}
383d26
+
383d26
 /**
383d26
  * All jobs must allow a pause point before entering their job proper. This
383d26
  * ensures that jobs can be paused prior to being started, then resumed later.
383d26
diff --git a/include/block/blockjob.h b/include/block/blockjob.h
383d26
index 82f52f4..0f56f72 100644
383d26
--- a/include/block/blockjob.h
383d26
+++ b/include/block/blockjob.h
383d26
@@ -452,4 +452,11 @@ void block_job_txn_add_job(BlockJobTxn *txn, BlockJob *job);
383d26
  */
383d26
 bool block_job_is_internal(BlockJob *job);
383d26
 
383d26
+/**
383d26
+ * block_job_driver:
383d26
+ *
383d26
+ * Returns the driver associated with a block job.
383d26
+ */
383d26
+const BlockJobDriver *block_job_driver(BlockJob *job);
383d26
+
383d26
 #endif
383d26
-- 
383d26
1.8.3.1
383d26