migration: allow rate > 4g
I'd like to disable bandwidth limit or make it very high, Use int64_t all over to make values >= 4g work. Signed-off-by: Michael S. Tsirkin <mst@redhat.com> Tested-by: Jason Wang <jasowang@redhat.com>
This commit is contained in:
parent
b2e0a138e7
commit
3d002df33e
@ -206,20 +206,23 @@ static int buffered_rate_limit(void *opaque)
|
||||
return 0;
|
||||
}
|
||||
|
||||
static size_t buffered_set_rate_limit(void *opaque, size_t new_rate)
|
||||
static int64_t buffered_set_rate_limit(void *opaque, int64_t new_rate)
|
||||
{
|
||||
QEMUFileBuffered *s = opaque;
|
||||
|
||||
if (s->has_error)
|
||||
goto out;
|
||||
|
||||
if (new_rate > SIZE_MAX) {
|
||||
new_rate = SIZE_MAX;
|
||||
}
|
||||
|
||||
s->xfer_limit = new_rate / 10;
|
||||
|
||||
out:
|
||||
return s->xfer_limit;
|
||||
}
|
||||
|
||||
static size_t buffered_get_rate_limit(void *opaque)
|
||||
static int64_t buffered_get_rate_limit(void *opaque)
|
||||
{
|
||||
QEMUFileBuffered *s = opaque;
|
||||
|
||||
|
8
hw/hw.h
8
hw/hw.h
@ -39,8 +39,8 @@ typedef int (QEMUFileRateLimit)(void *opaque);
|
||||
* the new actual bandwidth. It should be new_rate if everything goes ok, and
|
||||
* the old rate otherwise
|
||||
*/
|
||||
typedef size_t (QEMUFileSetRateLimit)(void *opaque, size_t new_rate);
|
||||
typedef size_t (QEMUFileGetRateLimit)(void *opaque);
|
||||
typedef int64_t (QEMUFileSetRateLimit)(void *opaque, int64_t new_rate);
|
||||
typedef int64_t (QEMUFileGetRateLimit)(void *opaque);
|
||||
|
||||
QEMUFile *qemu_fopen_ops(void *opaque, QEMUFilePutBufferFunc *put_buffer,
|
||||
QEMUFileGetBufferFunc *get_buffer,
|
||||
@ -83,8 +83,8 @@ unsigned int qemu_get_be16(QEMUFile *f);
|
||||
unsigned int qemu_get_be32(QEMUFile *f);
|
||||
uint64_t qemu_get_be64(QEMUFile *f);
|
||||
int qemu_file_rate_limit(QEMUFile *f);
|
||||
size_t qemu_file_set_rate_limit(QEMUFile *f, size_t new_rate);
|
||||
size_t qemu_file_get_rate_limit(QEMUFile *f);
|
||||
int64_t qemu_file_set_rate_limit(QEMUFile *f, int64_t new_rate);
|
||||
int64_t qemu_file_get_rate_limit(QEMUFile *f);
|
||||
int qemu_file_has_error(QEMUFile *f);
|
||||
void qemu_file_set_error(QEMUFile *f);
|
||||
|
||||
|
@ -32,7 +32,7 @@
|
||||
#endif
|
||||
|
||||
/* Migration speed throttling */
|
||||
static uint32_t max_throttle = (32 << 20);
|
||||
static int64_t max_throttle = (32 << 20);
|
||||
|
||||
static MigrationState *current_migration;
|
||||
|
||||
@ -136,7 +136,9 @@ int do_migrate_set_speed(Monitor *mon, const QDict *qdict, QObject **ret_data)
|
||||
FdMigrationState *s;
|
||||
|
||||
d = qdict_get_int(qdict, "value");
|
||||
d = MAX(0, MIN(UINT32_MAX, d));
|
||||
if (d < 0) {
|
||||
d = 0;
|
||||
}
|
||||
max_throttle = d;
|
||||
|
||||
s = migrate_to_fms(current_migration);
|
||||
|
4
savevm.c
4
savevm.c
@ -611,7 +611,7 @@ int qemu_file_rate_limit(QEMUFile *f)
|
||||
return 0;
|
||||
}
|
||||
|
||||
size_t qemu_file_get_rate_limit(QEMUFile *f)
|
||||
int64_t qemu_file_get_rate_limit(QEMUFile *f)
|
||||
{
|
||||
if (f->get_rate_limit)
|
||||
return f->get_rate_limit(f->opaque);
|
||||
@ -619,7 +619,7 @@ size_t qemu_file_get_rate_limit(QEMUFile *f)
|
||||
return 0;
|
||||
}
|
||||
|
||||
size_t qemu_file_set_rate_limit(QEMUFile *f, size_t new_rate)
|
||||
int64_t qemu_file_set_rate_limit(QEMUFile *f, int64_t new_rate)
|
||||
{
|
||||
/* any failed or completed migration keeps its state to allow probing of
|
||||
* migration data, but has no associated file anymore */
|
||||
|
Loading…
Reference in New Issue
Block a user