qemu-devel
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[Qemu-devel] [RFC PATCH 20/36] block: forward bdrv_iostatus_reset to blo


From: Paolo Bonzini
Subject: [Qemu-devel] [RFC PATCH 20/36] block: forward bdrv_iostatus_reset to block job
Date: Fri, 15 Jun 2012 17:05:43 +0200

Signed-off-by: Paolo Bonzini <address@hidden>
---
 block.c    |    3 +++
 blockjob.c |    7 +++++++
 blockjob.h |   12 ++++++++++++
 3 files changed, 22 insertions(+)

diff --git a/block.c b/block.c
index 5d293a0..f1afdd6 100644
--- a/block.c
+++ b/block.c
@@ -4123,6 +4123,9 @@ void bdrv_iostatus_reset(BlockDriverState *bs)
 {
     if (bdrv_iostatus_is_enabled(bs)) {
         bs->iostatus = BLOCK_DEVICE_IO_STATUS_OK;
+        if (bs->job) {
+            block_job_iostatus_reset(bs->job);
+        }
     }
 }
 
diff --git a/blockjob.c b/blockjob.c
index 651ee8d..d3819df 100644
--- a/blockjob.c
+++ b/blockjob.c
@@ -129,6 +129,13 @@ bool block_job_is_cancelled(BlockJob *job)
     return job->cancelled;
 }
 
+void block_job_iostatus_reset(BlockJob *job)
+{
+    if (job->job_type->iostatus_reset) {
+        job->job_type->iostatus_reset(job);
+    }
+}
+
 struct BlockCancelData {
     BlockJob *job;
     BlockDriverCompletionFunc *cb;
diff --git a/blockjob.h b/blockjob.h
index 6dec489..02e0363 100644
--- a/blockjob.h
+++ b/blockjob.h
@@ -44,6 +44,9 @@ typedef struct BlockJobType {
     /** Optional callback for job types that support setting a speed limit */
     void (*set_speed)(BlockJob *job, int64_t speed, Error **errp);
 
+    /** Optional callback for job types that need to forward I/O status reset 
*/
+    void (*iostatus_reset)(BlockJob *job);
+
     /**
      * Optional callback for job types that can fill the target member
      * of BlockJobInfo.
@@ -228,6 +231,15 @@ bool block_job_is_paused(BlockJob *job);
 int block_job_cancel_sync(BlockJob *job);
 
 /**
+ * block_job_iostatus_reset:
+ * @job: The job whose I/O status should be reset.
+ *
+ * Reset I/O status on BlockDriverState objects used by @job, other
+ * than job->bs.
+ */
+void block_job_iostatus_reset(BlockJob *job);
+
+/**
  * block_job_error_action:
  * @job: The job to signal an error for.
  * @bs: The block device on which to set an I/O error.
-- 
1.7.10.2





reply via email to

[Prev in Thread] Current Thread [Next in Thread]