Patchwork [06/20] block: return count of dirty sectors, not chunks

login
register
mail settings
Submitter Paolo Bonzini
Date Dec. 12, 2012, 1:46 p.m.
Message ID <1355319999-30627-7-git-send-email-pbonzini@redhat.com>
Download mbox | patch
Permalink /patch/205525/
State New
Headers show

Comments

Paolo Bonzini - Dec. 12, 2012, 1:46 p.m.
Reviewed-by: Laszlo Ersek <lersek@redhat.com>
Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>
---
 block-migration.c | 2 +-
 block.c           | 5 ++---
 block/mirror.c    | 2 +-
 3 files changed, 4 insertions(+), 5 deletions(-)
Eric Blake - Dec. 14, 2012, 8:49 p.m.
On 12/12/2012 06:46 AM, Paolo Bonzini wrote:
> Reviewed-by: Laszlo Ersek <lersek@redhat.com>
> Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>
> ---
>  block-migration.c | 2 +-
>  block.c           | 5 ++---
>  block/mirror.c    | 2 +-
>  3 files changed, 4 insertions(+), 5 deletions(-)

Reviewed-by: Eric Blake <eblake@redhat.com>

although the commit message could usefully add a line stating WHY
sectors is a more useful number than chunks

Patch

diff --git a/block-migration.c b/block-migration.c
index 71b9601..06967d8 100644
--- a/block-migration.c
+++ b/block-migration.c
@@ -490,7 +490,7 @@  static int64_t get_remaining_dirty(void)
         dirty += bdrv_get_dirty_count(bmds->bs);
     }
 
-    return dirty * BLOCK_SIZE;
+    return dirty << BDRV_SECTOR_BITS;
 }
 
 static int is_stage2_completed(void)
diff --git a/block.c b/block.c
index d93c386..ece2ad5 100644
--- a/block.c
+++ b/block.c
@@ -2819,8 +2819,7 @@  BlockInfo *bdrv_query_info(BlockDriverState *bs)
     if (bs->dirty_bitmap) {
         info->has_dirty = true;
         info->dirty = g_malloc0(sizeof(*info->dirty));
-        info->dirty->count = bdrv_get_dirty_count(bs) *
-            BDRV_SECTORS_PER_DIRTY_CHUNK * BDRV_SECTOR_SIZE;
+        info->dirty->count = bdrv_get_dirty_count(bs) * BDRV_SECTOR_SIZE;
     }
 
     if (bs->drv) {
@@ -4266,7 +4265,7 @@  void bdrv_reset_dirty(BlockDriverState *bs, int64_t cur_sector,
 int64_t bdrv_get_dirty_count(BlockDriverState *bs)
 {
     if (bs->dirty_bitmap) {
-        return hbitmap_count(bs->dirty_bitmap) >> BDRV_LOG_SECTORS_PER_DIRTY_CHUNK;
+        return hbitmap_count(bs->dirty_bitmap);
     } else {
         return 0;
     }
diff --git a/block/mirror.c b/block/mirror.c
index 14ce1a7..48c37a7 100644
--- a/block/mirror.c
+++ b/block/mirror.c
@@ -243,7 +243,7 @@  static void coroutine_fn mirror_run(void *opaque)
         trace_mirror_before_sleep(s, cnt, s->synced);
         if (!s->synced) {
             /* Publish progress */
-            s->common.offset = end * BDRV_SECTOR_SIZE - cnt * BLOCK_SIZE;
+            s->common.offset = (end - cnt) * BDRV_SECTOR_SIZE;
 
             if (s->common.speed) {
                 delay_ns = ratelimit_calculate_delay(&s->limit, BDRV_SECTORS_PER_DIRTY_CHUNK);