Re: [Qemu-devel] [PATCH v5 3/6] BitmapLog: get the information about the parameters

2014-08-12 Thread Dr. David Alan Gilbert
* Sanidhya Kashyap (sanidhya.ii...@gmail.com) wrote:
 No functional change except the variable name.
 
 Signed-off-by: Sanidhya Kashyap sanidhya.ii...@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();
 +

Re: [Qemu-devel] [PATCH v5 3/6] BitmapLog: get the information about the parameters

2014-08-12 Thread Eric Blake
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.ii...@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.

-- 
Eric Blake   eblake redhat com+1-919-301-3266
Libvirt virtualization library http://libvirt.org



signature.asc
Description: OpenPGP digital signature