[Top][All Lists]
[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
- [Qemu-devel] [RFC PATCH 08/36] block: rename block_job_complete to block_job_completed, (continued)
- [Qemu-devel] [RFC PATCH 08/36] block: rename block_job_complete to block_job_completed, Paolo Bonzini, 2012/06/15
- [Qemu-devel] [RFC PATCH 07/36] qemu-iotests: add test for pausing a streaming operation, Paolo Bonzini, 2012/06/15
- [Qemu-devel] [RFC PATCH 10/36] block: move BlockdevOnError declaration to QAPI, Paolo Bonzini, 2012/06/15
- [Qemu-devel] [RFC PATCH 09/36] block: rename BlockErrorAction, BlockQMPEventAction, Paolo Bonzini, 2012/06/15
- [Qemu-devel] [RFC PATCH 12/36] block: sort BlockDeviceIoStatus errors by severity, Paolo Bonzini, 2012/06/15
- [Qemu-devel] [RFC PATCH 11/36] block: reorganize io error code, Paolo Bonzini, 2012/06/15
- [Qemu-devel] [RFC PATCH 15/36] qemu-iotests: add tests for streaming error handling, Paolo Bonzini, 2012/06/15
- [Qemu-devel] [RFC PATCH 13/36] block: introduce block job error, Paolo Bonzini, 2012/06/15
- [Qemu-devel] [RFC PATCH 20/36] block: forward bdrv_iostatus_reset to block job,
Paolo Bonzini <=
- [Qemu-devel] [RFC PATCH 21/36] block: introduce new dirty bitmap functionality, Paolo Bonzini, 2012/06/15
- [Qemu-devel] [RFC PATCH 22/36] block: add mirror job, Paolo Bonzini, 2012/06/15
- [Qemu-devel] [RFC PATCH 19/36] block: add target info to QMP query-blockjobs command, Paolo Bonzini, 2012/06/15
- [Qemu-devel] [RFC PATCH 25/36] mirror: add support for on_source_error/on_target_error, Paolo Bonzini, 2012/06/15
- [Qemu-devel] [RFC PATCH 24/36] mirror: support querying target file, Paolo Bonzini, 2012/06/15
- [Qemu-devel] [RFC PATCH 29/36] mirror: implement completion, Paolo Bonzini, 2012/06/15
- [Qemu-devel] [RFC PATCH 34/36] block: return count of dirty sectors, not chunks, Paolo Bonzini, 2012/06/15
- [Qemu-devel] [RFC PATCH 33/36] mirror: perform COW if the cluster size is bigger than the granularity, Paolo Bonzini, 2012/06/15