Commit 141cdcdf authored by John Snow's avatar John Snow
Browse files

block/backup: centralize copy_bitmap initialization



Just a few housekeeping changes that keeps the following commit easier
to read; perform the initial copy_bitmap initialization in one place.

Signed-off-by: default avatarJohn Snow <jsnow@redhat.com>
Reviewed-by: default avatarMax Reitz <mreitz@redhat.com>
Message-id: 20190716000117.25219-8-jsnow@redhat.com
Signed-off-by: default avatarJohn Snow <jsnow@redhat.com>
parent 0fff1f13
Loading
Loading
Loading
Loading
+15 −14
Original line number Diff line number Diff line
@@ -451,16 +451,22 @@ static int coroutine_fn backup_loop(BackupBlockJob *job)
    return ret;
}

/* init copy_bitmap from sync_bitmap */
static void backup_incremental_init_copy_bitmap(BackupBlockJob *job)
static void backup_init_copy_bitmap(BackupBlockJob *job)
{
    bool ret = bdrv_dirty_bitmap_merge_internal(job->copy_bitmap,
    bool ret;
    uint64_t estimate;

    if (job->sync_mode == MIRROR_SYNC_MODE_BITMAP) {
        ret = bdrv_dirty_bitmap_merge_internal(job->copy_bitmap,
                                               job->sync_bitmap,
                                               NULL, true);
        assert(ret);
    } else {
        bdrv_set_dirty_bitmap(job->copy_bitmap, 0, job->len);
    }

    job_progress_set_remaining(&job->common.job,
                               bdrv_get_dirty_count(job->copy_bitmap));
    estimate = bdrv_get_dirty_count(job->copy_bitmap);
    job_progress_set_remaining(&job->common.job, estimate);
}

static int coroutine_fn backup_run(Job *job, Error **errp)
@@ -472,12 +478,7 @@ static int coroutine_fn backup_run(Job *job, Error **errp)
    QLIST_INIT(&s->inflight_reqs);
    qemu_co_rwlock_init(&s->flush_rwlock);

    if (s->sync_mode == MIRROR_SYNC_MODE_BITMAP) {
        backup_incremental_init_copy_bitmap(s);
    } else {
        bdrv_set_dirty_bitmap(s->copy_bitmap, 0, s->len);
        job_progress_set_remaining(job, s->len);
    }
    backup_init_copy_bitmap(s);

    s->before_write.notify = backup_before_write_notify;
    bdrv_add_before_write_notifier(bs, &s->before_write);