[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Qemu-devel] [PATCH v2 01/11] block: Add op blocker type "device IO"
From: |
Fam Zheng |
Subject: |
[Qemu-devel] [PATCH v2 01/11] block: Add op blocker type "device IO" |
Date: |
Wed, 13 May 2015 17:28:09 +0000 |
Preventing device from submitting IO is useful around various nested
aio_poll. Op blocker is a good place to put this flag.
Devices would submit IO requests through blk_* block backend interface,
which calls blk_check_request to check the validity. Return -EBUSY if
the operation is blocked, which means device IO is temporarily disabled
by another BDS user.
Signed-off-by: Fam Zheng <address@hidden>
---
block/block-backend.c | 4 ++++
include/block/block.h | 1 +
2 files changed, 5 insertions(+)
diff --git a/block/block-backend.c b/block/block-backend.c
index 93e46f3..71fc695 100644
--- a/block/block-backend.c
+++ b/block/block-backend.c
@@ -478,6 +478,10 @@ static int blk_check_request(BlockBackend *blk, int64_t
sector_num,
return -EIO;
}
+ if (bdrv_op_is_blocked(blk->bs, BLOCK_OP_TYPE_DEVICE_IO, NULL)) {
+ return -EBUSY;
+ }
+
return blk_check_byte_request(blk, sector_num * BDRV_SECTOR_SIZE,
nb_sectors * BDRV_SECTOR_SIZE);
}
diff --git a/include/block/block.h b/include/block/block.h
index 7d1a717..906fb31 100644
--- a/include/block/block.h
+++ b/include/block/block.h
@@ -159,6 +159,7 @@ typedef enum BlockOpType {
BLOCK_OP_TYPE_RESIZE,
BLOCK_OP_TYPE_STREAM,
BLOCK_OP_TYPE_REPLACE,
+ BLOCK_OP_TYPE_DEVICE_IO,
BLOCK_OP_TYPE_MAX,
} BlockOpType;
--
2.4.0
[Qemu-devel] [PATCH v2 02/11] block: Add op blocker notifier list, Fam Zheng, 2015/05/13
[Qemu-devel] [PATCH v2 04/11] virtio-blk: Move complete_request to 'ops' structure, Fam Zheng, 2015/05/13
[Qemu-devel] [PATCH v2 03/11] block-backend: Add blk_op_blocker_add_notifier, Fam Zheng, 2015/05/13
[Qemu-devel] [PATCH v2 05/11] virtio-blk: Don't handle output when there is "device IO" op blocker, Fam Zheng, 2015/05/13