Message ID | 1406862751-24008-4-git-send-email-sanidhya.iiith@gmail.com |
---|---|
State | New |
Headers | show |
* Sanidhya Kashyap (sanidhya.iiith@gmail.com) wrote: > No functional change except the variable name. > > Signed-off-by: Sanidhya Kashyap <sanidhya.iiith@gmail.com> > --- > hmp-commands.hx | 2 ++ > hmp.c | 19 +++++++++++++++++++ > hmp.h | 1 + > monitor.c | 7 +++++++ > qapi-schema.json | 28 ++++++++++++++++++++++++++++ > qmp-commands.hx | 25 +++++++++++++++++++++++++ > savevm.c | 17 +++++++++++++++++ > 7 files changed, 99 insertions(+) > > diff --git a/hmp-commands.hx b/hmp-commands.hx > index 30b553e..dca65bc 100644 > --- a/hmp-commands.hx > +++ b/hmp-commands.hx > @@ -1780,6 +1780,8 @@ show qdev device model list > show roms > @item info tpm > show the TPM device > +@item info log_dirty_bitmap > +show the current parameters values > @end table > ETEXI > > diff --git a/hmp.c b/hmp.c > index d067420..0a8831b 100644 > --- a/hmp.c > +++ b/hmp.c > @@ -1732,3 +1732,22 @@ void hmp_info_memdev(Monitor *mon, const QDict *qdict) > > monitor_printf(mon, "\n"); > } > + > +void hmp_info_log_dirty_bitmap(Monitor *mon, const QDict *qdict) > +{ > + Error *err = NULL; > + BitmapLogStateInfo *info = qmp_query_log_dirty_bitmap(&err); > + > + if (info) { > + monitor_printf(mon, "current iteration: %ld\n", > + info->current_iteration); > + monitor_printf(mon, "total iterations: %ld\n", info->iterations); > + monitor_printf(mon, "current period value: %ld\n", info->period); I think you need to use the PRId64 macros there rather than %ld; because long is not always 64bits (there are some other uses in hmp.c) > + } > + > + if (err) { > + hmp_handle_error(mon, &err); > + } > + > + qapi_free_BitmapLogStateInfo(info); > +} > diff --git a/hmp.h b/hmp.h > index 0895182..02e8ee4 100644 > --- a/hmp.h > +++ b/hmp.h > @@ -38,6 +38,7 @@ void hmp_info_balloon(Monitor *mon, const QDict *qdict); > void hmp_info_pci(Monitor *mon, const QDict *qdict); > void hmp_info_block_jobs(Monitor *mon, const QDict *qdict); > void hmp_info_tpm(Monitor *mon, const QDict *qdict); > +void hmp_info_log_dirty_bitmap(Monitor *mon, const QDict *qdict); > void hmp_quit(Monitor *mon, const QDict *qdict); > void hmp_stop(Monitor *mon, const QDict *qdict); > void hmp_system_reset(Monitor *mon, const QDict *qdict); > diff --git a/monitor.c b/monitor.c > index 5bc70a6..5f20f72 100644 > --- a/monitor.c > +++ b/monitor.c > @@ -2918,6 +2918,13 @@ static mon_cmd_t info_cmds[] = { > .mhandler.cmd = hmp_info_memdev, > }, > { > + .name = "log_dirty_bitmap", > + .args_type = "", > + .params = "", > + .help = "show the current parameters values", > + .mhandler.cmd = hmp_info_log_dirty_bitmap, > + }, > + { > .name = NULL, > }, > }; > diff --git a/qapi-schema.json b/qapi-schema.json > index dced3c2..6aac367 100644 > --- a/qapi-schema.json > +++ b/qapi-schema.json > @@ -3515,3 +3515,31 @@ > 'data' : { 'filename' : 'str', > '*iterations' : 'int', > '*period' : 'int' } } > +## > +# @BitmapLogStateInfo > +# > +# Provides information for the bitmap logging process > +# > +# @current-iteration: stores current iteration value > +# > +# @iterations: total iterations value > +# > +# @period: the time difference in milliseconds between each iteration > +# > +# Since 2.2 > +## > +{ 'type': 'BitmapLogStateInfo', > + 'data': { 'current-iteration' : 'int', > + 'iterations' : 'int', > + 'period' : 'int' } } > + > +## > +# @query-log-dirty-bitmap > +# > +# Get the current values of the parameters involved in bitmap logging process > +# > +# This command returns the BitmapLogStateInfo > +# > +# Since 2.2 > +## > +{ 'command': 'query-log-dirty-bitmap', 'returns': 'BitmapLogStateInfo' } > diff --git a/qmp-commands.hx b/qmp-commands.hx > index 2ead2ca..e79ed6a 100644 > --- a/qmp-commands.hx > +++ b/qmp-commands.hx > @@ -3789,3 +3789,28 @@ Examples: > Note: The iterations, and period parameters are optional. iterations default > value is 3 while that of period is 10. > EQMP > + > + { > + .name = "query-log-dirty-bitmap", > + .args_type = "", > + .mhandler.cmd_new = qmp_marshal_input_query_log_dirty_bitmap, > + }, > + > +SQMP > +query-log-dirty-bitmap > +---------------------- > + > +Get the parameters information > + > +- "current-iteration": stores current iteration value > +- "iterations": total iterations value > +- "period": the time difference in milliseconds between each iteration > + > +Example: > + > +-> { "execute": "query-log-dirty-bitmap" } > +<- { "return": { > + "current-iteration": 3 > + "iterations": 10 > + "period": 100 } } > +EQMP > diff --git a/savevm.c b/savevm.c > index 125e5ed..22e84fe 100644 > --- a/savevm.c > +++ b/savevm.c > @@ -1515,6 +1515,23 @@ void qmp_log_dirty_bitmap(const char *filename, bool has_iterations, > return; > } > > +BitmapLogStateInfo *qmp_query_log_dirty_bitmap(Error **errp) > +{ > + BitmapLogState *b = log_bitmap_get_current_state(); > + BitmapLogStateInfo *info = NULL; > + > + if (b->state != LOG_BITMAP_STATE_ACTIVE) { > + return info; > + } > + > + info = g_malloc0(sizeof(BitmapLogStateInfo)); > + info->current_iteration = b->current_iteration; > + info->iterations = b->iterations; > + info->period = b->current_period; > + > + return info; > +} > + > void qmp_xen_save_devices_state(const char *filename, Error **errp) > { > QEMUFile *f; > -- > 1.9.3 > -- Dr. David Alan Gilbert / dgilbert@redhat.com / Manchester, UK
On 07/31/2014 09:12 PM, Sanidhya Kashyap wrote: > No functional change except the variable name. This comment feels more like it is a changelog of what is different from v4. If so, it belongs... > > Signed-off-by: Sanidhya Kashyap <sanidhya.iiith@gmail.com> > --- ...here, after the --- separator. It makes no sense in isolation in qemu.git (where v1 through v4 do not appear), but is there only to aid reviewers on list (who DO see prior versions, and want to see if you took into account earlier review comments). > + if (info) { > + monitor_printf(mon, "current iteration: %ld\n", > + info->current_iteration); Won't compile on 32-bit. Per patch 2/6, info->current_iteration is int64_t, but %ld might be 32-bit. Furthermore, patch 2/6 had an (arbitrary?) limit of 100,000 as the maximum iteration request, which fits in a 32-bit value to begin with, so using int64_t to hold the value is overkill. > +Example: > + > +-> { "execute": "query-log-dirty-bitmap" } > +<- { "return": { > + "current-iteration": 3 > + "iterations": 10 > + "period": 100 } } That's not valid JSON. You are missing two commas. It's best to paste an actual QMP result, rather than trying to write it by hand.
diff --git a/hmp-commands.hx b/hmp-commands.hx index 30b553e..dca65bc 100644 --- a/hmp-commands.hx +++ b/hmp-commands.hx @@ -1780,6 +1780,8 @@ show qdev device model list show roms @item info tpm show the TPM device +@item info log_dirty_bitmap +show the current parameters values @end table ETEXI diff --git a/hmp.c b/hmp.c index d067420..0a8831b 100644 --- a/hmp.c +++ b/hmp.c @@ -1732,3 +1732,22 @@ void hmp_info_memdev(Monitor *mon, const QDict *qdict) monitor_printf(mon, "\n"); } + +void hmp_info_log_dirty_bitmap(Monitor *mon, const QDict *qdict) +{ + Error *err = NULL; + BitmapLogStateInfo *info = qmp_query_log_dirty_bitmap(&err); + + if (info) { + monitor_printf(mon, "current iteration: %ld\n", + info->current_iteration); + monitor_printf(mon, "total iterations: %ld\n", info->iterations); + monitor_printf(mon, "current period value: %ld\n", info->period); + } + + if (err) { + hmp_handle_error(mon, &err); + } + + qapi_free_BitmapLogStateInfo(info); +} diff --git a/hmp.h b/hmp.h index 0895182..02e8ee4 100644 --- a/hmp.h +++ b/hmp.h @@ -38,6 +38,7 @@ void hmp_info_balloon(Monitor *mon, const QDict *qdict); void hmp_info_pci(Monitor *mon, const QDict *qdict); void hmp_info_block_jobs(Monitor *mon, const QDict *qdict); void hmp_info_tpm(Monitor *mon, const QDict *qdict); +void hmp_info_log_dirty_bitmap(Monitor *mon, const QDict *qdict); void hmp_quit(Monitor *mon, const QDict *qdict); void hmp_stop(Monitor *mon, const QDict *qdict); void hmp_system_reset(Monitor *mon, const QDict *qdict); diff --git a/monitor.c b/monitor.c index 5bc70a6..5f20f72 100644 --- a/monitor.c +++ b/monitor.c @@ -2918,6 +2918,13 @@ static mon_cmd_t info_cmds[] = { .mhandler.cmd = hmp_info_memdev, }, { + .name = "log_dirty_bitmap", + .args_type = "", + .params = "", + .help = "show the current parameters values", + .mhandler.cmd = hmp_info_log_dirty_bitmap, + }, + { .name = NULL, }, }; diff --git a/qapi-schema.json b/qapi-schema.json index dced3c2..6aac367 100644 --- a/qapi-schema.json +++ b/qapi-schema.json @@ -3515,3 +3515,31 @@ 'data' : { 'filename' : 'str', '*iterations' : 'int', '*period' : 'int' } } +## +# @BitmapLogStateInfo +# +# Provides information for the bitmap logging process +# +# @current-iteration: stores current iteration value +# +# @iterations: total iterations value +# +# @period: the time difference in milliseconds between each iteration +# +# Since 2.2 +## +{ 'type': 'BitmapLogStateInfo', + 'data': { 'current-iteration' : 'int', + 'iterations' : 'int', + 'period' : 'int' } } + +## +# @query-log-dirty-bitmap +# +# Get the current values of the parameters involved in bitmap logging process +# +# This command returns the BitmapLogStateInfo +# +# Since 2.2 +## +{ 'command': 'query-log-dirty-bitmap', 'returns': 'BitmapLogStateInfo' } diff --git a/qmp-commands.hx b/qmp-commands.hx index 2ead2ca..e79ed6a 100644 --- a/qmp-commands.hx +++ b/qmp-commands.hx @@ -3789,3 +3789,28 @@ Examples: Note: The iterations, and period parameters are optional. iterations default value is 3 while that of period is 10. EQMP + + { + .name = "query-log-dirty-bitmap", + .args_type = "", + .mhandler.cmd_new = qmp_marshal_input_query_log_dirty_bitmap, + }, + +SQMP +query-log-dirty-bitmap +---------------------- + +Get the parameters information + +- "current-iteration": stores current iteration value +- "iterations": total iterations value +- "period": the time difference in milliseconds between each iteration + +Example: + +-> { "execute": "query-log-dirty-bitmap" } +<- { "return": { + "current-iteration": 3 + "iterations": 10 + "period": 100 } } +EQMP diff --git a/savevm.c b/savevm.c index 125e5ed..22e84fe 100644 --- a/savevm.c +++ b/savevm.c @@ -1515,6 +1515,23 @@ void qmp_log_dirty_bitmap(const char *filename, bool has_iterations, return; } +BitmapLogStateInfo *qmp_query_log_dirty_bitmap(Error **errp) +{ + BitmapLogState *b = log_bitmap_get_current_state(); + BitmapLogStateInfo *info = NULL; + + if (b->state != LOG_BITMAP_STATE_ACTIVE) { + return info; + } + + info = g_malloc0(sizeof(BitmapLogStateInfo)); + info->current_iteration = b->current_iteration; + info->iterations = b->iterations; + info->period = b->current_period; + + return info; +} + void qmp_xen_save_devices_state(const char *filename, Error **errp) { QEMUFile *f;
No functional change except the variable name. Signed-off-by: Sanidhya Kashyap <sanidhya.iiith@gmail.com> --- hmp-commands.hx | 2 ++ hmp.c | 19 +++++++++++++++++++ hmp.h | 1 + monitor.c | 7 +++++++ qapi-schema.json | 28 ++++++++++++++++++++++++++++ qmp-commands.hx | 25 +++++++++++++++++++++++++ savevm.c | 17 +++++++++++++++++ 7 files changed, 99 insertions(+)