mirror of
https://git.proxmox.com/git/qemu
synced 2025-08-07 00:36:06 +00:00
block-migration: small preparatory changes for locking
Some small changes that will simplify the positioning of lock/unlock primitives. Reviewed-by: Orit Wasserman <owasserm@redhat.com> Reviewed-by: Juan Quintela <quintela@redhat.com> Signed-off-by: Paolo Bonzini <pbonzini@redhat.com> Signed-off-by: Juan Quintela <quintela@redhat.com>
This commit is contained in:
parent
a55ce1c851
commit
13197e3cba
@ -231,9 +231,10 @@ static int mig_save_device_bulk(QEMUFile *f, BlkMigDevState *bmds)
|
|||||||
blk->iov.iov_len = nr_sectors * BDRV_SECTOR_SIZE;
|
blk->iov.iov_len = nr_sectors * BDRV_SECTOR_SIZE;
|
||||||
qemu_iovec_init_external(&blk->qiov, &blk->iov, 1);
|
qemu_iovec_init_external(&blk->qiov, &blk->iov, 1);
|
||||||
|
|
||||||
|
block_mig_state.submitted++;
|
||||||
|
|
||||||
blk->aiocb = bdrv_aio_readv(bs, cur_sector, &blk->qiov,
|
blk->aiocb = bdrv_aio_readv(bs, cur_sector, &blk->qiov,
|
||||||
nr_sectors, blk_mig_read_cb, blk);
|
nr_sectors, blk_mig_read_cb, blk);
|
||||||
block_mig_state.submitted++;
|
|
||||||
|
|
||||||
bdrv_reset_dirty(bs, cur_sector, nr_sectors);
|
bdrv_reset_dirty(bs, cur_sector, nr_sectors);
|
||||||
bmds->cur_sector = cur_sector + nr_sectors;
|
bmds->cur_sector = cur_sector + nr_sectors;
|
||||||
@ -440,9 +441,10 @@ static int flush_blks(QEMUFile *f)
|
|||||||
ret = blk->ret;
|
ret = blk->ret;
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
blk_send(f, blk);
|
|
||||||
|
|
||||||
QSIMPLEQ_REMOVE_HEAD(&block_mig_state.blk_list, entry);
|
QSIMPLEQ_REMOVE_HEAD(&block_mig_state.blk_list, entry);
|
||||||
|
blk_send(f, blk);
|
||||||
|
|
||||||
g_free(blk->buf);
|
g_free(blk->buf);
|
||||||
g_free(blk);
|
g_free(blk);
|
||||||
|
|
||||||
@ -542,15 +544,16 @@ static int block_save_iterate(QEMUFile *f, void *opaque)
|
|||||||
/* finished saving bulk on all devices */
|
/* finished saving bulk on all devices */
|
||||||
block_mig_state.bulk_completed = 1;
|
block_mig_state.bulk_completed = 1;
|
||||||
}
|
}
|
||||||
|
ret = 0;
|
||||||
} else {
|
} else {
|
||||||
ret = blk_mig_save_dirty_block(f, 1);
|
ret = blk_mig_save_dirty_block(f, 1);
|
||||||
if (ret < 0) {
|
}
|
||||||
return ret;
|
if (ret < 0) {
|
||||||
}
|
return ret;
|
||||||
if (ret != 0) {
|
}
|
||||||
/* no more dirty blocks */
|
if (ret != 0) {
|
||||||
break;
|
/* no more dirty blocks */
|
||||||
}
|
break;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -560,7 +563,6 @@ static int block_save_iterate(QEMUFile *f, void *opaque)
|
|||||||
}
|
}
|
||||||
|
|
||||||
qemu_put_be64(f, BLK_MIG_FLAG_EOS);
|
qemu_put_be64(f, BLK_MIG_FLAG_EOS);
|
||||||
|
|
||||||
return qemu_ftell(f) - last_ftell;
|
return qemu_ftell(f) - last_ftell;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -603,7 +605,9 @@ static int block_save_complete(QEMUFile *f, void *opaque)
|
|||||||
static uint64_t block_save_pending(QEMUFile *f, void *opaque, uint64_t max_size)
|
static uint64_t block_save_pending(QEMUFile *f, void *opaque, uint64_t max_size)
|
||||||
{
|
{
|
||||||
/* Estimate pending number of bytes to send */
|
/* Estimate pending number of bytes to send */
|
||||||
uint64_t pending = get_remaining_dirty() +
|
uint64_t pending;
|
||||||
|
|
||||||
|
pending = get_remaining_dirty() +
|
||||||
block_mig_state.submitted * BLOCK_SIZE +
|
block_mig_state.submitted * BLOCK_SIZE +
|
||||||
block_mig_state.read_done * BLOCK_SIZE;
|
block_mig_state.read_done * BLOCK_SIZE;
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user