[Top][All Lists]
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Qemu-devel] [PATCH 12/47] block: sort BlockDeviceIoStatus errors by sev
From: |
Paolo Bonzini |
Subject: |
[Qemu-devel] [PATCH 12/47] block: sort BlockDeviceIoStatus errors by severity |
Date: |
Tue, 24 Jul 2012 13:03:50 +0200 |
This does not let a "failed" (EIO) status override a "nospace" status.
When several concurrent asynchronous operations fail, management will
always observe the most severe condition.
Signed-off-by: Paolo Bonzini <address@hidden>
---
block.c | 11 ++++++++---
qapi-schema.json | 2 +-
2 files changed, 9 insertions(+), 4 deletions(-)
diff --git a/block.c b/block.c
index 333a8fd..dce07b3 100644
--- a/block.c
+++ b/block.c
@@ -3883,9 +3883,14 @@ void bdrv_iostatus_reset(BlockDriverState *bs)
void bdrv_iostatus_set_err(BlockDriverState *bs, int error)
{
assert(bdrv_iostatus_is_enabled(bs));
- if (bs->iostatus == BLOCK_DEVICE_IO_STATUS_OK) {
- bs->iostatus = error == ENOSPC ? BLOCK_DEVICE_IO_STATUS_NOSPACE :
- BLOCK_DEVICE_IO_STATUS_FAILED;
+ BlockDeviceIoStatus new_status =
+ (error == ENOSPC ? BLOCK_DEVICE_IO_STATUS_NOSPACE :
+ BLOCK_DEVICE_IO_STATUS_FAILED);
+
+ /* iostatus values are sorted from less severe to most severe
+ * (ok, nospace, failed). */
+ if (bs->iostatus < new_status) {
+ bs->iostatus = new_status;
}
}
diff --git a/qapi-schema.json b/qapi-schema.json
index 136ce5e..2dee7c3 100644
--- a/qapi-schema.json
+++ b/qapi-schema.json
@@ -435,7 +435,7 @@
#
# Since: 1.0
##
-{ 'enum': 'BlockDeviceIoStatus', 'data': [ 'ok', 'failed', 'nospace' ] }
+{ 'enum': 'BlockDeviceIoStatus', 'data': [ 'ok', 'nospace', 'failed' ] }
##
# @BlockInfo:
--
1.7.10.4
- Re: [Qemu-devel] [PATCH 04/47] block: add block_job_query, (continued)
[Qemu-devel] [PATCH 06/47] qmp: add block-job-pause and block-job-resume, Paolo Bonzini, 2012/07/24
[Qemu-devel] [PATCH 03/47] block: move job APIs to separate files, Paolo Bonzini, 2012/07/24
[Qemu-devel] [PATCH 07/47] qemu-iotests: add test for pausing a streaming operation, Paolo Bonzini, 2012/07/24
[Qemu-devel] [PATCH 08/47] block: rename block_job_complete to block_job_completed, Paolo Bonzini, 2012/07/24
[Qemu-devel] [PATCH 10/47] block: move BlockdevOnError declaration to QAPI, Paolo Bonzini, 2012/07/24
[Qemu-devel] [PATCH 09/47] block: rename BlockErrorAction, BlockQMPEventAction, Paolo Bonzini, 2012/07/24
[Qemu-devel] [PATCH 12/47] block: sort BlockDeviceIoStatus errors by severity,
Paolo Bonzini <=
[Qemu-devel] [PATCH 13/47] block: introduce block job error, Paolo Bonzini, 2012/07/24
[Qemu-devel] [PATCH 11/47] block: reorganize io error code, Paolo Bonzini, 2012/07/24
[Qemu-devel] [PATCH 16/47] qemu-iotests: map underscore to dash in QMP argument names, Paolo Bonzini, 2012/07/24
[Qemu-devel] [PATCH 15/47] blkdebug: process all set_state rules in the old state, Paolo Bonzini, 2012/07/24
[Qemu-devel] [PATCH 14/47] stream: add on-error argument, Paolo Bonzini, 2012/07/24
[Qemu-devel] [PATCH 19/47] block: add bdrv_query_info, Paolo Bonzini, 2012/07/24
[Qemu-devel] [PATCH 20/47] block: add bdrv_query_stats, Paolo Bonzini, 2012/07/24