[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Qemu-devel] [RFC PATCH 1/7] block: Add op blocker type "device IO"
From: |
Fam Zheng |
Subject: |
[Qemu-devel] [RFC PATCH 1/7] block: Add op blocker type "device IO" |
Date: |
Wed, 6 May 2015 19:23:33 +0800 |
Preventing device from submitting IO is useful around various nested
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, in which case 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;
--
1.9.3
- [Qemu-devel] [RFC PATCH 0/7] Fix transactional snapshot with virtio-blk dataplane, Fam Zheng, 2015/05/06
- [Qemu-devel] [RFC PATCH 1/7] block: Add op blocker type "device IO",
Fam Zheng <=
- [Qemu-devel] [RFC PATCH 3/7] block: Add op blocker notifier list, Fam Zheng, 2015/05/06
- [Qemu-devel] [RFC PATCH 4/7] block-backend: Add blk_op_blocker_add_notifier, Fam Zheng, 2015/05/06
- [Qemu-devel] [RFC PATCH 2/7] block: Block "device IO" during bdrv_drain and bdrv_drain_all, Fam Zheng, 2015/05/06
- [Qemu-devel] [RFC PATCH 5/7] virtio-blk: Move complete_request to 'ops' structure, Fam Zheng, 2015/05/06
- [Qemu-devel] [RFC PATCH 7/7] blockdev: Add "device IO" op blocker during snapshot transaction, Fam Zheng, 2015/05/06
- [Qemu-devel] [RFC PATCH 6/7] virtio-blk: Don't handle output when there is "device IO" op blocker, Fam Zheng, 2015/05/06