[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Qemu-block] [PATCH 1/2] block: add BDRV_REQ_SERIALISING flag
From: |
Vladimir Sementsov-Ogievskiy |
Subject: |
[Qemu-block] [PATCH 1/2] block: add BDRV_REQ_SERIALISING flag |
Date: |
Tue, 3 Jul 2018 21:07:50 +0300 |
Serialized writes should be used in copy-on-write of backup(sync=none)
for image fleecing scheme.
Signed-off-by: Vladimir Sementsov-Ogievskiy <address@hidden>
---
include/block/block.h | 5 ++++-
block/io.c | 4 ++++
2 files changed, 8 insertions(+), 1 deletion(-)
diff --git a/include/block/block.h b/include/block/block.h
index e5c7759a0c..107113aad5 100644
--- a/include/block/block.h
+++ b/include/block/block.h
@@ -58,8 +58,11 @@ typedef enum {
* content. */
BDRV_REQ_WRITE_UNCHANGED = 0x40,
+ /* Force request serializing. Only for writes. */
+ BDRV_REQ_SERIALISING = 0x80,
+
/* Mask of valid flags */
- BDRV_REQ_MASK = 0x7f,
+ BDRV_REQ_MASK = 0xff,
} BdrvRequestFlags;
typedef struct BlockSizes {
diff --git a/block/io.c b/block/io.c
index 1a2272fad3..d5ba078514 100644
--- a/block/io.c
+++ b/block/io.c
@@ -1572,6 +1572,10 @@ static int coroutine_fn bdrv_aligned_pwritev(BdrvChild
*child,
max_transfer = QEMU_ALIGN_DOWN(MIN_NON_ZERO(bs->bl.max_transfer, INT_MAX),
align);
+ if (flags & BDRV_REQ_SERIALISING) {
+ mark_request_serialising(req, bdrv_get_cluster_size(bs));
+ }
+
waited = wait_serialising_requests(req);
assert(!waited || !req->serialising);
assert(req->overlap_offset <= offset);
--
2.11.1
- [Qemu-block] [PATCH 0/2] fix image fleecing, Vladimir Sementsov-Ogievskiy, 2018/07/03
- [Qemu-block] [PATCH 1/2] block: add BDRV_REQ_SERIALISING flag,
Vladimir Sementsov-Ogievskiy <=
- Re: [Qemu-block] [PATCH 1/2] block: add BDRV_REQ_SERIALISING flag, Vladimir Sementsov-Ogievskiy, 2018/07/04
- Re: [Qemu-block] [PATCH 1/2] block: add BDRV_REQ_SERIALISING flag, Kevin Wolf, 2018/07/04
- Re: [Qemu-block] [PATCH 1/2] block: add BDRV_REQ_SERIALISING flag, Vladimir Sementsov-Ogievskiy, 2018/07/04
- Re: [Qemu-block] [PATCH 1/2] block: add BDRV_REQ_SERIALISING flag, Kevin Wolf, 2018/07/04
- Re: [Qemu-block] [PATCH 1/2] block: add BDRV_REQ_SERIALISING flag, Vladimir Sementsov-Ogievskiy, 2018/07/04
- Re: [Qemu-block] [PATCH 1/2] block: add BDRV_REQ_SERIALISING flag, Vladimir Sementsov-Ogievskiy, 2018/07/04
- Re: [Qemu-block] [PATCH 1/2] block: add BDRV_REQ_SERIALISING flag, Kevin Wolf, 2018/07/05
[Qemu-block] [PATCH 2/2] block/backup: fix fleecing scheme: use serialized writes, Vladimir Sementsov-Ogievskiy, 2018/07/03