@@ -134,21 +134,10 @@ uint64_t migrate_max_downtime(void)
void do_migrate_set_downtime(Monitor *mon, const QDict *qdict)
{
- char *ptr;
double d;
- const char *value = qdict_get_str(qdict, "value");
-
- d = strtod(value, &ptr);
- if (!strcmp(ptr,"ms")) {
- d *= 1000000;
- } else if (!strcmp(ptr,"us")) {
- d *= 1000;
- } else if (!strcmp(ptr,"ns")) {
- } else {
- /* all else considered to be seconds */
- d *= 1000000000;
- }
+ d = qdict_get_double(qdict, "value") / 1e9;
+ d = MAX(0, MIN(UINT64_MAX, d));
max_downtime = (uint64_t)d;
}
@@ -774,7 +774,7 @@ ETEXI
{
.name = "migrate_set_downtime",
- .args_type = "value:s",
+ .args_type = "value:T",
.params = "value",
.help = "set maximum tolerated downtime (in seconds) for migrations",
.mhandler.cmd = do_migrate_set_downtime,
Before, it used type 's', which strips quotes and interprets escapes, and is quite inappropriate for QMP. Signed-off-by: Markus Armbruster <armbru@redhat.com> --- migration.c | 15 ++------------- qemu-monitor.hx | 2 +- 2 files changed, 3 insertions(+), 14 deletions(-)