From: John Snow <jsnow@redhat.com>
To: Vladimir Sementsov-Ogievskiy <vsementsov@parallels.com>,
qemu-devel@nongnu.org
Cc: kwolf@redhat.com, den@openvz.org, stefanha@redhat.com
Subject: Re: [Qemu-devel] [PATCH 7/9] block-migration: remove not needed iothread lock
Date: Thu, 08 Jan 2015 16:24:05 -0500 [thread overview]
Message-ID: <54AEF575.2040703@redhat.com> (raw)
In-Reply-To: <1418307457-25996-8-git-send-email-vsementsov@parallels.com>
On 12/11/2014 09:17 AM, Vladimir Sementsov-Ogievskiy wrote:
> Instead of locking iothread, we can just swap these calls. So, if some
> write to our range occures before resetting the bitmap, then it will
> get into subsequent aio read, becouse it occures, in any case, after
> resetting the bitmap.
>
s/occures/occurs/g
s/becouse/because/g
(I hope you are not annoyed by the spelling corrections: They are in
good faith and personally I would hope people would correct any of my
spelling mistakes before it goes in the git log!)
> Signed-off-by: Vladimir Sementsov-Ogievskiy <vsementsov@parallels.com>
> ---
> block-migration.c | 6 ++----
> 1 file changed, 2 insertions(+), 4 deletions(-)
>
> diff --git a/block-migration.c b/block-migration.c
> index d0c825f..908a66d 100644
> --- a/block-migration.c
> +++ b/block-migration.c
> @@ -315,13 +315,11 @@ static int mig_save_device_bulk(QEMUFile *f, BlkMigDevState *bmds)
> block_mig_state.submitted++;
> blk_mig_unlock();
>
> - qemu_mutex_lock_iothread();
> + bdrv_reset_dirty_bitmap(bs, bmds->dirty_bitmap, cur_sector, nr_sectors);
> +
> blk->aiocb = bdrv_aio_readv(bs, cur_sector, &blk->qiov,
> nr_sectors, blk_mig_read_cb, blk);
>
> - bdrv_reset_dirty_bitmap(bs, bmds->dirty_bitmap, cur_sector, nr_sectors);
> - qemu_mutex_unlock_iothread();
> -
> bmds->cur_sector = cur_sector + nr_sectors;
> return (bmds->cur_sector >= total_sectors);
> }
>
OK, so the justification here is that by ordering it as "reset, read"
that any writes that occur after the reset will be simply included in
the read, and we won't have reset any bits that we didn't actually get a
chance to read.
OK.
But what about losing the ability to clear bits that are set needlessly?
e.g.:
Sector 1 is dirty. Sector 2 is clean.
We reset the bitmap. All sectors are clean.
A write occurs to sector 2, marking it dirty.
We read sectors one and two.
Sector two is now erroneously marked dirty, when it isn't.
It's not a data integrity problem, but we're swapping one inefficiency
for another.
Do you have a justification for why this is better than the lock?
next prev parent reply other threads:[~2015-01-08 21:24 UTC|newest]
Thread overview: 47+ messages / expand[flat|nested] mbox.gz Atom feed top
2014-12-11 14:17 [Qemu-devel] [PATCH 0/8] Dirty bitmaps migration Vladimir Sementsov-Ogievskiy
2014-12-11 14:17 ` [Qemu-devel] [PATCH 1/9] block: rename bdrv_reset_dirty_bitmap Vladimir Sementsov-Ogievskiy
2015-01-08 21:19 ` John Snow
2014-12-11 14:17 ` [Qemu-devel] [PATCH 2/9] block-migration: fix pending() return value Vladimir Sementsov-Ogievskiy
2015-01-08 21:20 ` John Snow
2015-01-09 19:01 ` Dr. David Alan Gilbert
2014-12-11 14:17 ` [Qemu-devel] [PATCH 3/9] block: fix spoiling all dirty bitmaps by mirror and migration Vladimir Sementsov-Ogievskiy
2015-01-08 21:20 ` John Snow
2014-12-11 14:17 ` [Qemu-devel] [PATCH 4/9] hbitmap: store / restore Vladimir Sementsov-Ogievskiy
2015-01-08 21:21 ` John Snow
2015-01-08 21:37 ` Paolo Bonzini
2015-01-13 12:59 ` Vladimir Sementsov-Ogievskiy
2015-01-13 17:08 ` John Snow
2015-01-14 10:29 ` Vladimir Sementsov-Ogievskiy
2014-12-11 14:17 ` [Qemu-devel] [PATCH 5/9] block: BdrvDirtyBitmap store/restore interface Vladimir Sementsov-Ogievskiy
2015-01-08 21:22 ` John Snow
2015-01-14 11:27 ` Vladimir Sementsov-Ogievskiy
2014-12-11 14:17 ` [Qemu-devel] [PATCH 6/9] block-migration: tiny refactoring Vladimir Sementsov-Ogievskiy
2015-01-08 21:23 ` John Snow
2015-01-14 12:26 ` Vladimir Sementsov-Ogievskiy
2015-01-14 16:53 ` John Snow
2014-12-11 14:17 ` [Qemu-devel] [PATCH 7/9] block-migration: remove not needed iothread lock Vladimir Sementsov-Ogievskiy
2015-01-08 21:24 ` John Snow [this message]
2015-01-16 12:54 ` Vladimir Sementsov-Ogievskiy
2015-01-08 22:28 ` Paolo Bonzini
2015-01-16 13:03 ` Vladimir Sementsov-Ogievskiy
2014-12-11 14:17 ` [Qemu-devel] [PATCH 8/9] migration: add dirty parameter Vladimir Sementsov-Ogievskiy
2014-12-11 15:18 ` Eric Blake
2014-12-15 8:33 ` Vladimir Sementsov-Ogievskiy
2015-01-08 21:51 ` John Snow
2015-01-08 22:29 ` Eric Blake
2015-01-08 22:31 ` John Snow
2015-01-08 22:37 ` Paolo Bonzini
2014-12-11 14:17 ` [Qemu-devel] [PATCH 9/9] block-migration: add named dirty bitmaps migration Vladimir Sementsov-Ogievskiy
2015-01-08 22:05 ` John Snow
2015-01-17 17:17 ` Vladimir Sementsov-Ogievskiy
2015-01-20 17:25 ` John Snow
2015-01-08 22:36 ` Paolo Bonzini
2015-01-08 22:45 ` Eric Blake
2015-01-08 22:49 ` Paolo Bonzini
2015-01-12 14:20 ` Vladimir Sementsov-Ogievskiy
2015-01-12 14:42 ` Paolo Bonzini
2015-01-12 16:48 ` Paolo Bonzini
2015-01-12 17:31 ` John Snow
2015-01-12 19:09 ` Paolo Bonzini
2015-01-13 9:16 ` Vladimir Sementsov-Ogievskiy
2015-01-13 16:35 ` John Snow
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=54AEF575.2040703@redhat.com \
--to=jsnow@redhat.com \
--cc=den@openvz.org \
--cc=kwolf@redhat.com \
--cc=qemu-devel@nongnu.org \
--cc=stefanha@redhat.com \
--cc=vsementsov@parallels.com \
/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).