From: Stefan Hajnoczi <stefanha@redhat.com>
To: qemu-devel@nongnu.org
Cc: Paolo Bonzini <pbonzini@redhat.com>,
Anthony Liguori <aliguori@us.ibm.com>,
Stefan Hajnoczi <stefanha@redhat.com>
Subject: [Qemu-devel] [PATCH 09/15] block: clear dirty bitmap when discarding
Date: Tue, 15 Jan 2013 17:48:25 +0100 [thread overview]
Message-ID: <1358268511-27061-10-git-send-email-stefanha@redhat.com> (raw)
In-Reply-To: <1358268511-27061-1-git-send-email-stefanha@redhat.com>
From: Paolo Bonzini <pbonzini@redhat.com>
Note that resetting bits in the dirty bitmap is done _before_ actually
processing the request. Writes, instead, set bits after the request
is completed.
This way, when there are concurrent write and discard requests, the
outcome will always be that the blocks are marked dirty. This scenario
should never happen, but it is safer to do it this way.
Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>
Signed-off-by: Stefan Hajnoczi <stefanha@redhat.com>
---
block.c | 8 +++++++-
1 file changed, 7 insertions(+), 1 deletion(-)
diff --git a/block.c b/block.c
index 4a90dd1..6fa7c90 100644
--- a/block.c
+++ b/block.c
@@ -4170,7 +4170,13 @@ int coroutine_fn bdrv_co_discard(BlockDriverState *bs, int64_t sector_num,
return -EIO;
} else if (bs->read_only) {
return -EROFS;
- } else if (bs->drv->bdrv_co_discard) {
+ }
+
+ if (bs->dirty_bitmap) {
+ set_dirty_bitmap(bs, sector_num, nb_sectors, 0);
+ }
+
+ if (bs->drv->bdrv_co_discard) {
return bs->drv->bdrv_co_discard(bs, sector_num, nb_sectors);
} else if (bs->drv->bdrv_aio_discard) {
BlockDriverAIOCB *acb;
--
1.8.0.2
next prev parent reply other threads:[~2013-01-15 16:49 UTC|newest]
Thread overview: 17+ messages / expand[flat|nested] mbox.gz Atom feed top
2013-01-15 16:48 [Qemu-devel] [PULL 00/15] Block patches for QEMU 1.4 Stefan Hajnoczi
2013-01-15 16:48 ` [Qemu-devel] [PATCH 01/15] qcow2: Fix segfault on zero-length write Stefan Hajnoczi
2013-01-15 16:48 ` [Qemu-devel] [PATCH 02/15] block: fix initialization in bdrv_io_limits_enable() Stefan Hajnoczi
2013-01-15 16:48 ` [Qemu-devel] [PATCH 03/15] raw-posix: support discard on more filesystems Stefan Hajnoczi
2013-01-15 16:48 ` [Qemu-devel] [PATCH 04/15] raw-posix: remember whether discard failed Stefan Hajnoczi
2013-01-15 16:48 ` [Qemu-devel] [PATCH 05/15] raw: support discard on block devices Stefan Hajnoczi
2013-01-15 16:48 ` [Qemu-devel] [PATCH 06/15] block: make discard asynchronous Stefan Hajnoczi
2013-01-15 16:48 ` [Qemu-devel] [PATCH 07/15] ide: fix TRIM with empty range entry Stefan Hajnoczi
2013-01-15 16:48 ` [Qemu-devel] [PATCH 08/15] ide: issue discard asynchronously but serialize the pieces Stefan Hajnoczi
2013-01-15 16:48 ` Stefan Hajnoczi [this message]
2013-01-15 16:48 ` [Qemu-devel] [PATCH 10/15] sheepdog: multiplex the rw FD to flush cache Stefan Hajnoczi
2013-01-15 16:48 ` [Qemu-devel] [PATCH 11/15] sheepdog: clean up sd_aio_setup() Stefan Hajnoczi
2013-01-15 16:48 ` [Qemu-devel] [PATCH 12/15] w32: Make qemu_vfree() accept NULL like the POSIX implementation Stefan Hajnoczi
2013-01-15 16:48 ` [Qemu-devel] [PATCH 13/15] scsi-disk: qemu_vfree(NULL) is fine, simplify Stefan Hajnoczi
2013-01-15 16:48 ` [Qemu-devel] [PATCH 14/15] win32-aio: Fix how win32_aio_process_completion() frees buffer Stefan Hajnoczi
2013-01-15 16:48 ` [Qemu-devel] [PATCH 15/15] block: Fix how mirror_run() frees its buffer Stefan Hajnoczi
2013-01-16 1:18 ` [Qemu-devel] [PULL 00/15] Block patches for QEMU 1.4 Anthony Liguori
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=1358268511-27061-10-git-send-email-stefanha@redhat.com \
--to=stefanha@redhat.com \
--cc=aliguori@us.ibm.com \
--cc=pbonzini@redhat.com \
--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).