[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Qemu-block] [PATCH 13/18] block/mirror: Keep write perm for pending wri
From: |
Max Reitz |
Subject: |
[Qemu-block] [PATCH 13/18] block/mirror: Keep write perm for pending writes |
Date: |
Wed, 13 Sep 2017 20:19:05 +0200 |
The owner of the mirror BDS might retire its write permission; but there
may still be pending mirror operations so the mirror BDS cannot
necessarily retire its write permission for its child then.
Signed-off-by: Max Reitz <address@hidden>
---
block/mirror.c | 6 ++++--
1 file changed, 4 insertions(+), 2 deletions(-)
diff --git a/block/mirror.c b/block/mirror.c
index 05410c94ca..612fab660e 100644
--- a/block/mirror.c
+++ b/block/mirror.c
@@ -1236,6 +1236,7 @@ static void bdrv_mirror_top_child_perm(BlockDriverState
*bs, BdrvChild *c,
uint64_t *nperm, uint64_t *nshared)
{
MirrorBDSOpaque *s = bs->opaque;
+ bool ops_in_flight = s->job && !QTAILQ_EMPTY(&s->job->ops_in_flight);
if (s->job && s->job->exiting) {
*nperm = 0;
@@ -1243,9 +1244,10 @@ static void bdrv_mirror_top_child_perm(BlockDriverState
*bs, BdrvChild *c,
return;
}
- /* Must be able to forward guest writes to the real image */
+ /* Must be able to forward both new and pending guest writes to
+ * the real image */
*nperm = 0;
- if (perm & BLK_PERM_WRITE) {
+ if ((perm & BLK_PERM_WRITE) || ops_in_flight) {
*nperm |= BLK_PERM_WRITE;
}
--
2.13.5
- [Qemu-block] [PATCH 07/18] block/mirror: Wait for in-flight op conflicts, (continued)
- [Qemu-block] [PATCH 07/18] block/mirror: Wait for in-flight op conflicts, Max Reitz, 2017/09/13
- [Qemu-block] [PATCH 08/18] block/mirror: Use source as a BdrvChild, Max Reitz, 2017/09/13
- [Qemu-block] [PATCH 09/18] block: Generalize should_update_child() rule, Max Reitz, 2017/09/13
- [Qemu-block] [PATCH 10/18] block/mirror: Make source the file child, Max Reitz, 2017/09/13
- [Qemu-block] [PATCH 11/18] hbitmap: Add @advance param to hbitmap_iter_next(), Max Reitz, 2017/09/13
- [Qemu-block] [PATCH 12/18] block/dirty-bitmap: Add bdrv_dirty_iter_next_area, Max Reitz, 2017/09/13
- [Qemu-block] [PATCH 13/18] block/mirror: Keep write perm for pending writes,
Max Reitz <=
- [Qemu-block] [PATCH 14/18] block/mirror: Distinguish active from passive ops, Max Reitz, 2017/09/13
- [Qemu-block] [PATCH 15/18] block/mirror: Add active mirroring, Max Reitz, 2017/09/13
- Re: [Qemu-block] [PATCH 15/18] block/mirror: Add active mirroring, Stefan Hajnoczi, 2017/09/14
- Re: [Qemu-block] [PATCH 15/18] block/mirror: Add active mirroring, Max Reitz, 2017/09/16
- Re: [Qemu-block] [PATCH 15/18] block/mirror: Add active mirroring, Stefan Hajnoczi, 2017/09/18
- Re: [Qemu-block] [PATCH 15/18] block/mirror: Add active mirroring, Max Reitz, 2017/09/18
- Re: [Qemu-block] [PATCH 15/18] block/mirror: Add active mirroring, Stefan Hajnoczi, 2017/09/19
- Re: [Qemu-block] [Qemu-devel] [PATCH 15/18] block/mirror: Add active mirroring, Daniel P. Berrange, 2017/09/19
- Re: [Qemu-block] [Qemu-devel] [PATCH 15/18] block/mirror: Add active mirroring, Stefan Hajnoczi, 2017/09/20
[Qemu-block] [PATCH 16/18] block/mirror: Add copy mode QAPI interface, Max Reitz, 2017/09/13