On 04/18/2012 08:07 PM, Juan Quintela wrote: > Orit Wasserman <owass...@redhat.com> wrote: >> Change XBZRLE cache size in bytes (the size should be a power of 2). >> If XBZRLE cache size is too small there will be many cache miss. > >> + .name = "migrate_set_cachesize", >> + .args_type = "value:o", > > This mean that we can assign values like 256M, right? i.e. no way to > pass negative values? >> index 7578163..071a1b9 100644 >> --- a/migration.c >> +++ b/migration.c >> @@ -167,7 +167,7 @@ MigrationCapList *qmp_query_migration_caps(Error **errp) >> MigrationCapList *caps_list = g_malloc0(sizeof(*caps_list)); >> >> caps_list->value = g_malloc(sizeof(*caps_list->value)); >> - caps_list->value->name = g_strdup("uleb"); >> + caps_list->value->name = g_strdup("xbzrle"); >> caps_list->next = NULL; >> > > Shouldn't this go in the previous patche?sure > >> +void qmp_migrate_set_cachesize(int64_t value, Error **errp) >> +{ >> + MigrationState *s; >> + >> + /* Check for truncation */ >> + if (value != (size_t)value) { >> + error_set(errp, QERR_INVALID_PARAMETER_VALUE, "cache size", >> + "exceeding address space"); >> + return; >> + } >> + >> + /* power of 2 */ >> + if (value != 1 && (value & (value - 1))) { >> + error_set(errp, QERR_INVALID_PARAMETER_VALUE, "cache size", >> + "needs to be power of 2"); >> + return; >> + } > > Don't we have a function to calculate if a value is a power of 2 in > qemu? I guess we need one _now_. I will look into it. maybe there is a function like that ... . > >> + >> + value = MIN(UINT64_MAX, value); >> + if (value == migrate_cache_size) { >> + return; >> + } >> + >> + migrate_cache_size = value; > > Can't we just remove the migrate_cache_size as a new field of > migration_state. bandwidth_limit is the example on how to do it. Ok
Thanks, Orit > > Thanks, Juan.