From: Stefan Hajnoczi <stefanha@redhat.com>
To: qemu-devel@nongnu.org
Cc: Peter Maydell <peter.maydell@linaro.org>,
"Denis V. Lunev" <den@openvz.org>,
Stefan Hajnoczi <stefanha@redhat.com>,
Kevin Wolf <kwolf@redhat.com>, Max Reitz <mreitz@redhat.com>
Subject: [Qemu-devel] [PULL 11/20] block: fix race in bdrv_co_discard with drive-mirror
Date: Mon, 20 Jun 2016 15:05:22 +0100 [thread overview]
Message-ID: <1466431531-17806-12-git-send-email-stefanha@redhat.com> (raw)
In-Reply-To: <1466431531-17806-1-git-send-email-stefanha@redhat.com>
From: "Denis V. Lunev" <den@openvz.org>
Actually we must set dirty bitmap dirty after we have written all our
zeroes for correct processing in drive mirror code. In the other case
we can face not zeroes in this area in mirror_iteration.
Signed-off-by: Denis V. Lunev <den@openvz.org>
Reviewed-by: Vladimir Sementsov-Ogievskiy<vsementsov@virtuozzo.com>
Reviewed-by: Fam Zheng <famz@redhat.com>
Reviewed-by: Eric Blake <eblake@redhat.com>
Message-id: 1466093381-6120-3-git-send-email-den@openvz.org
CC: Stefan Hajnoczi <stefanha@redhat.com>
CC: Kevin Wolf <kwolf@redhat.com>
CC: Max Reitz <mreitz@redhat.com>
Signed-off-by: Stefan Hajnoczi <stefanha@redhat.com>
---
block/io.c | 3 ++-
1 file changed, 2 insertions(+), 1 deletion(-)
diff --git a/block/io.c b/block/io.c
index 3527d91..8ab6f95 100644
--- a/block/io.c
+++ b/block/io.c
@@ -2349,7 +2349,6 @@ int coroutine_fn bdrv_co_discard(BlockDriverState *bs, int64_t sector_num,
tracked_request_begin(&req, bs, sector_num << BDRV_SECTOR_BITS,
nb_sectors << BDRV_SECTOR_BITS, BDRV_TRACKED_DISCARD);
- bdrv_set_dirty(bs, sector_num, nb_sectors);
max_discard = MIN_NON_ZERO(bs->bl.max_discard, BDRV_REQUEST_MAX_SECTORS);
while (nb_sectors > 0) {
@@ -2398,6 +2397,8 @@ int coroutine_fn bdrv_co_discard(BlockDriverState *bs, int64_t sector_num,
}
ret = 0;
out:
+ bdrv_set_dirty(bs, req.offset >> BDRV_SECTOR_BITS,
+ req.bytes >> BDRV_SECTOR_BITS);
tracked_request_end(&req);
return ret;
}
--
2.5.5
next prev parent reply other threads:[~2016-06-20 14:06 UTC|newest]
Thread overview: 22+ messages / expand[flat|nested] mbox.gz Atom feed top
2016-06-20 14:05 [Qemu-devel] [PULL 00/20] Block patches Stefan Hajnoczi
2016-06-20 14:05 ` [Qemu-devel] [PULL 01/20] libqos: use virtio_ids.h for device ID definitions Stefan Hajnoczi
2016-06-20 14:05 ` [Qemu-devel] [PULL 02/20] libqos: drop duplicated PCI vendor ID definition Stefan Hajnoczi
2016-06-20 14:05 ` [Qemu-devel] [PULL 03/20] libqos: drop duplicated virtio_config.h definitions Stefan Hajnoczi
2016-06-20 14:05 ` [Qemu-devel] [PULL 04/20] libqos: drop duplicated virtio_ring.h bit definitions Stefan Hajnoczi
2016-06-20 14:05 ` [Qemu-devel] [PULL 05/20] libqos: drop duplicated virtio_vring.h structs Stefan Hajnoczi
2016-06-20 14:05 ` [Qemu-devel] [PULL 06/20] libqos: drop duplicated virtio_blk.h definitions Stefan Hajnoczi
2016-06-20 14:05 ` [Qemu-devel] [PULL 07/20] libqos: drop duplicated virtio_scsi.h definitions Stefan Hajnoczi
2016-06-20 14:05 ` [Qemu-devel] [PULL 08/20] libqos: drop duplicated virtio_pci.h definitions Stefan Hajnoczi
2016-06-20 14:05 ` [Qemu-devel] [PULL 09/20] libqos: add qvirtqueue_cleanup() Stefan Hajnoczi
2016-06-20 14:05 ` [Qemu-devel] [PULL 10/20] block: fixed BdrvTrackedRequest filling in bdrv_co_discard Stefan Hajnoczi
2016-06-20 14:05 ` Stefan Hajnoczi [this message]
2016-06-20 14:05 ` [Qemu-devel] [PULL 12/20] block: process before_write_notifiers " Stefan Hajnoczi
2016-06-20 14:05 ` [Qemu-devel] [PULL 13/20] blockjob: move iostatus reset out of block_job_enter() Stefan Hajnoczi
2016-06-20 14:05 ` [Qemu-devel] [PULL 14/20] blockjob: rename block_job_is_paused() Stefan Hajnoczi
2016-06-20 14:05 ` [Qemu-devel] [PULL 15/20] blockjob: add pause points Stefan Hajnoczi
2016-06-20 14:05 ` [Qemu-devel] [PULL 16/20] blockjob: add block_job_get_aio_context() Stefan Hajnoczi
2016-06-20 14:05 ` [Qemu-devel] [PULL 17/20] block: use safe iteration over AioContext notifiers Stefan Hajnoczi
2016-06-20 14:05 ` [Qemu-devel] [PULL 18/20] blockjob: add AioContext attached callback Stefan Hajnoczi
2016-06-20 14:05 ` [Qemu-devel] [PULL 19/20] mirror: follow AioContext change gracefully Stefan Hajnoczi
2016-06-20 14:05 ` [Qemu-devel] [PULL 20/20] backup: " Stefan Hajnoczi
2016-06-20 17:08 ` [Qemu-devel] [PULL 00/20] Block patches Peter Maydell
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=1466431531-17806-12-git-send-email-stefanha@redhat.com \
--to=stefanha@redhat.com \
--cc=den@openvz.org \
--cc=kwolf@redhat.com \
--cc=mreitz@redhat.com \
--cc=peter.maydell@linaro.org \
--cc=qemu-devel@nongnu.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).