qemu-block
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [Qemu-block] [Qemu-devel] [PATCH RFC for-2.6 0/3] block: Add meta di


From: Vladimir Sementsov-Ogievskiy
Subject: Re: [Qemu-block] [Qemu-devel] [PATCH RFC for-2.6 0/3] block: Add meta dirty bitmap for migration/persistence
Date: Wed, 9 Dec 2015 14:57:18 +0300
User-agent: Mozilla/5.0 (X11; Linux x86_64; rv:31.0) Gecko/20100101 Thunderbird/31.8.0

On 08.12.2015 04:36, Fam Zheng wrote:
On Mon, 12/07 18:47, John Snow wrote:

On 12/07/2015 12:59 AM, Fam Zheng wrote:
Vladimir,

This is what I propose to implement meta bitmap. It's implemented in the
HBitmap level to be more efficient, and the interface slightly varies too.

I missed it: What was wrong with Vladimir's approach / what are the
benefits of this approach?
The only real difference with this series is, only actual bit toggling will
mark meta dirty. Vladimir's approach was in BdrvDirtyBitmap level which can't
tell bit toggling from repetitive bit set/unset. This is from his patch:

Ok, you are right. It's truth.


@@ -3390,6 +3428,9 @@ void bdrv_set_dirty_bitmap(BdrvDirtyBitmap *bitmap,
  {
      assert(bdrv_dirty_bitmap_enabled(bitmap));
      hbitmap_set(bitmap->bitmap, cur_sector, nr_sectors);
+    if (bitmap->meta_bitmap) {
+        hbitmap_set(bitmap->meta_bitmap, cur_sector, nr_sectors);
+    }
  }

  void bdrv_reset_dirty_bitmap(BdrvDirtyBitmap *bitmap,
@@ -3397,6 +3438,9 @@ void bdrv_reset_dirty_bitmap(BdrvDirtyBitmap *bitmap,
  {
      assert(bdrv_dirty_bitmap_enabled(bitmap));
      hbitmap_reset(bitmap->bitmap, cur_sector, nr_sectors);
+    if (bitmap->meta_bitmap) {
+        hbitmap_set(bitmap->meta_bitmap, cur_sector, nr_sectors);
+    }
  }

  void bdrv_clear_dirty_bitmap(BdrvDirtyBitmap *bitmap)

I'd like to use these operations to make dirty bitmap persistence more
efficient too: unchanged dirty bits don't need to be flushed to disk. So I'm
posting this as a separate series for a common base for both sides.

This is a reasonable use of the meta-bitmap strategy in general.

Keep in mind Vladimir's approach to Meta bitmaps used a different
granularity such that 1 physical bit implied 1 sector needed to be
re-transmitted.
Yes, I can fix the meta bitmap granularity.

A meta-bitmap that keeps track of disk flushes may require a different
granularity than one used for migration.

Posting as RFC as 2.6 dev phase is just starting, we can still tweak the
interface and/or implementation to fit the need.

Fam Zheng (3):
   HBitmap: Introduce "meta" bitmap to track bit changes
   tests: Add test code for meta bitmap
   block: Support meta dirty bitmap

  block.c                | 46 ++++++++++++++++++++++++++++++-
  block/mirror.c         |  3 +-
  blockdev.c             |  3 +-
  include/block/block.h  | 11 ++++++++
  include/qemu/hbitmap.h |  7 +++++
  migration/block.c      |  2 +-
  tests/test-hbitmap.c   | 74 ++++++++++++++++++++++++++++++++++++++++++++++++++
  util/hbitmap.c         | 22 +++++++++++++++
  8 files changed, 164 insertions(+), 4 deletions(-)



--
Best regards,
Vladimir
* now, @virtuozzo.com instead of @parallels.com. Sorry for this inconvenience.




reply via email to

[Prev in Thread] Current Thread [Next in Thread]