mirror of https://gitee.com/openkylin/qemu.git
block migration: Report progress also via info migration
Signed-off-by: Jan Kiszka <jan.kiszka@siemens.com> Signed-off-by: Anthony Liguori <aliguori@us.ibm.com>
This commit is contained in:
parent
7184049ee6
commit
25f236433f
|
@ -91,6 +91,38 @@ static void blk_send(QEMUFile *f, BlkMigBlock * blk)
|
||||||
qemu_put_buffer(f, blk->buf, BLOCK_SIZE);
|
qemu_put_buffer(f, blk->buf, BLOCK_SIZE);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
int blk_mig_active(void)
|
||||||
|
{
|
||||||
|
return !QSIMPLEQ_EMPTY(&block_mig_state.bmds_list);
|
||||||
|
}
|
||||||
|
|
||||||
|
uint64_t blk_mig_bytes_transferred(void)
|
||||||
|
{
|
||||||
|
BlkMigDevState *bmds;
|
||||||
|
uint64_t sum = 0;
|
||||||
|
|
||||||
|
QSIMPLEQ_FOREACH(bmds, &block_mig_state.bmds_list, entry) {
|
||||||
|
sum += bmds->completed_sectors;
|
||||||
|
}
|
||||||
|
return sum << BDRV_SECTOR_BITS;
|
||||||
|
}
|
||||||
|
|
||||||
|
uint64_t blk_mig_bytes_remaining(void)
|
||||||
|
{
|
||||||
|
return blk_mig_bytes_total() - blk_mig_bytes_transferred();
|
||||||
|
}
|
||||||
|
|
||||||
|
uint64_t blk_mig_bytes_total(void)
|
||||||
|
{
|
||||||
|
BlkMigDevState *bmds;
|
||||||
|
uint64_t sum = 0;
|
||||||
|
|
||||||
|
QSIMPLEQ_FOREACH(bmds, &block_mig_state.bmds_list, entry) {
|
||||||
|
sum += bmds->total_sectors;
|
||||||
|
}
|
||||||
|
return sum << BDRV_SECTOR_BITS;
|
||||||
|
}
|
||||||
|
|
||||||
static void blk_mig_read_cb(void *opaque, int ret)
|
static void blk_mig_read_cb(void *opaque, int ret)
|
||||||
{
|
{
|
||||||
BlkMigBlock *blk = opaque;
|
BlkMigBlock *blk = opaque;
|
||||||
|
|
|
@ -15,5 +15,9 @@
|
||||||
#define BLOCK_MIGRATION_H
|
#define BLOCK_MIGRATION_H
|
||||||
|
|
||||||
void blk_mig_init(void);
|
void blk_mig_init(void);
|
||||||
|
int blk_mig_active(void);
|
||||||
|
uint64_t blk_mig_bytes_transferred(void);
|
||||||
|
uint64_t blk_mig_bytes_remaining(void);
|
||||||
|
uint64_t blk_mig_bytes_total(void);
|
||||||
|
|
||||||
#endif /* BLOCK_MIGRATION_H */
|
#endif /* BLOCK_MIGRATION_H */
|
||||||
|
|
|
@ -18,6 +18,7 @@
|
||||||
#include "sysemu.h"
|
#include "sysemu.h"
|
||||||
#include "block.h"
|
#include "block.h"
|
||||||
#include "qemu_socket.h"
|
#include "qemu_socket.h"
|
||||||
|
#include "block-migration.h"
|
||||||
|
|
||||||
//#define DEBUG_MIGRATION
|
//#define DEBUG_MIGRATION
|
||||||
|
|
||||||
|
@ -174,6 +175,14 @@ void do_info_migrate(Monitor *mon)
|
||||||
monitor_printf(mon, "transferred ram: %" PRIu64 " kbytes\n", ram_bytes_transferred() >> 10);
|
monitor_printf(mon, "transferred ram: %" PRIu64 " kbytes\n", ram_bytes_transferred() >> 10);
|
||||||
monitor_printf(mon, "remaining ram: %" PRIu64 " kbytes\n", ram_bytes_remaining() >> 10);
|
monitor_printf(mon, "remaining ram: %" PRIu64 " kbytes\n", ram_bytes_remaining() >> 10);
|
||||||
monitor_printf(mon, "total ram: %" PRIu64 " kbytes\n", ram_bytes_total() >> 10);
|
monitor_printf(mon, "total ram: %" PRIu64 " kbytes\n", ram_bytes_total() >> 10);
|
||||||
|
if (blk_mig_active()) {
|
||||||
|
monitor_printf(mon, "transferred disk: %" PRIu64 " kbytes\n",
|
||||||
|
blk_mig_bytes_transferred() >> 10);
|
||||||
|
monitor_printf(mon, "remaining disk: %" PRIu64 " kbytes\n",
|
||||||
|
blk_mig_bytes_remaining() >> 10);
|
||||||
|
monitor_printf(mon, "total disk: %" PRIu64 " kbytes\n",
|
||||||
|
blk_mig_bytes_total() >> 10);
|
||||||
|
}
|
||||||
break;
|
break;
|
||||||
case MIG_STATE_COMPLETED:
|
case MIG_STATE_COMPLETED:
|
||||||
monitor_printf(mon, "completed\n");
|
monitor_printf(mon, "completed\n");
|
||||||
|
|
Loading…
Reference in New Issue