index 4056164..0a05971 100644
--- a/block/mirror.c
+++ b/block/mirror.c
-@@ -432,11 +432,23 @@ static void coroutine_fn mirror_run(void *opaque)
+@@ -444,11 +444,23 @@ static void coroutine_fn mirror_run(void *opaque)
sectors_per_chunk = s->granularity >> BDRV_SECTOR_BITS;
mirror_free_init(s);
@@ -455,7 +467,6 @@ static void coroutine_fn mirror_run(void *opaque)
}
- bdrv_dirty_iter_init(bs, s->dirty_bitmap, &s->hbi);
+ bdrv_dirty_iter_init(s->dirty_bitmap, &s->hbi);
- last_pause_ns = qemu_clock_get_ns(QEMU_CLOCK_REALTIME);
for (;;) {
uint64_t delay_ns = 0;
index ca55578..e8cb592 100644
--- a/block/mirror.c
+++ b/block/mirror.c
-@@ -371,7 +371,7 @@ static void coroutine_fn mirror_run(void *opaque)
+@@ -387,7 +387,7 @@ static void coroutine_fn mirror_run(void *opaque)
MirrorBlockJob *s = opaque;
MirrorExitData *data;
BlockDriverState *bs = s->common.bs;
uint64_t last_pause_ns;
BlockDriverInfo bdi;
char backing_filename[2]; /* we only need 2 characters because we are only
-@@ -425,7 +425,6 @@ static void coroutine_fn mirror_run(void *opaque)
+@@ -441,7 +441,6 @@ static void coroutine_fn mirror_run(void *opaque)
goto immediate_exit;
}
mirror_free_init(s);
last_pause_ns = qemu_clock_get_ns(QEMU_CLOCK_REALTIME);
-@@ -433,7 +432,9 @@ static void coroutine_fn mirror_run(void *opaque)
+@@ -449,7 +448,9 @@ static void coroutine_fn mirror_run(void *opaque)
/* First part, loop on the sectors and initialize the dirty bitmap. */
BlockDriverState *base = s->base;
for (sector_num = 0; sector_num < end; ) {
int64_t now = qemu_clock_get_ns(QEMU_CLOCK_REALTIME);
if (now - last_pause_ns > SLICE_TIME) {
-@@ -444,9 +445,7 @@ static void coroutine_fn mirror_run(void *opaque)
+@@ -460,9 +461,7 @@ static void coroutine_fn mirror_run(void *opaque)
if (block_job_is_cancelled(&s->common)) {
goto immediate_exit;
}
if (ret < 0) {
goto immediate_exit;
-@@ -455,10 +454,8 @@ static void coroutine_fn mirror_run(void *opaque)
+@@ -471,10 +470,8 @@ static void coroutine_fn mirror_run(void *opaque)
assert(n > 0);
if (ret == 1) {
- bdrv_set_dirty_bitmap(bs, s->dirty_bitmap, sector_num, n);
+ bdrv_set_dirty_bitmap(s->dirty_bitmap, sector_num, n);
- sector_num = next;
- } else {
- sector_num += n;