Message ID | 1449628943-10197-11-git-send-email-peterx@redhat.com |
---|---|
State | New |
Headers | show |
On Wed, 12/09 10:42, Peter Xu wrote: > It will calculate percentage of finished work from completed and > total. > > Signed-off-by: Peter Xu <peterx@redhat.com> > --- > hmp-commands-info.hx | 14 ++++++++++++++ > hmp.c | 17 +++++++++++++++++ > hmp.h | 1 + > 3 files changed, 32 insertions(+) > > diff --git a/hmp-commands-info.hx b/hmp-commands-info.hx > index 9b71351..52539c3 100644 > --- a/hmp-commands-info.hx > +++ b/hmp-commands-info.hx > @@ -786,6 +786,20 @@ STEXI > Display the value of a storage key (s390 only) > ETEXI > > + { > + .name = "dump", > + .args_type = "", > + .params = "", > + .help = "Display the latest dump status", > + .mhandler.cmd = hmp_info_dump, > + }, > + > +STEXI > +@item info dump > +@findex dump > +Display the latest dump status. > +ETEXI > + > STEXI > @end table > ETEXI > diff --git a/hmp.c b/hmp.c > index 1f4d0b6..c824064 100644 > --- a/hmp.c > +++ b/hmp.c > @@ -2383,3 +2383,20 @@ void hmp_rocker_of_dpa_groups(Monitor *mon, const QDict *qdict) > > qapi_free_RockerOfDpaGroupList(list); > } > + > +void hmp_info_dump(Monitor *mon, const QDict *qdict) > +{ > + DumpQueryResult *result = qmp_query_dump(NULL); If something goes wrong, it is probably better to pass in local_err to qmp_query_dump and print the error info instead of assuming result's fields are all valid and trying to interpret them. Fam > + > + assert(result->status < DUMP_STATUS_MAX); > + monitor_printf(mon, "Status: %s\n", DumpStatus_lookup[result->status]); > + > + if (result->status == DUMP_STATUS_ACTIVE) { > + float percent = 0; > + assert(result->total != 0); > + percent = 100.0 * result->completed / result->total; > + monitor_printf(mon, "Finished: %.2f %%\n", percent); > + } > + > + qapi_free_DumpQueryResult(result); > +} > diff --git a/hmp.h b/hmp.h > index a8c5b5a..093d65f 100644 > --- a/hmp.h > +++ b/hmp.h > @@ -131,5 +131,6 @@ void hmp_rocker(Monitor *mon, const QDict *qdict); > void hmp_rocker_ports(Monitor *mon, const QDict *qdict); > void hmp_rocker_of_dpa_flows(Monitor *mon, const QDict *qdict); > void hmp_rocker_of_dpa_groups(Monitor *mon, const QDict *qdict); > +void hmp_info_dump(Monitor *mon, const QDict *qdict); > > #endif > -- > 2.4.3 >
On Tue, Feb 16, 2016 at 02:46:15PM +0800, Fam Zheng wrote: > On Wed, 12/09 10:42, Peter Xu wrote: > > + > > +void hmp_info_dump(Monitor *mon, const QDict *qdict) > > +{ > > + DumpQueryResult *result = qmp_query_dump(NULL); > > If something goes wrong, it is probably better to pass in local_err to > qmp_query_dump and print the error info instead of assuming result's fields are > all valid and trying to interpret them. > > Fam This is because qmp_query_dump() will never fail, and it's not using errp. Will assert "result" too before use. Thanks. Peter
diff --git a/hmp-commands-info.hx b/hmp-commands-info.hx index 9b71351..52539c3 100644 --- a/hmp-commands-info.hx +++ b/hmp-commands-info.hx @@ -786,6 +786,20 @@ STEXI Display the value of a storage key (s390 only) ETEXI + { + .name = "dump", + .args_type = "", + .params = "", + .help = "Display the latest dump status", + .mhandler.cmd = hmp_info_dump, + }, + +STEXI +@item info dump +@findex dump +Display the latest dump status. +ETEXI + STEXI @end table ETEXI diff --git a/hmp.c b/hmp.c index 1f4d0b6..c824064 100644 --- a/hmp.c +++ b/hmp.c @@ -2383,3 +2383,20 @@ void hmp_rocker_of_dpa_groups(Monitor *mon, const QDict *qdict) qapi_free_RockerOfDpaGroupList(list); } + +void hmp_info_dump(Monitor *mon, const QDict *qdict) +{ + DumpQueryResult *result = qmp_query_dump(NULL); + + assert(result->status < DUMP_STATUS_MAX); + monitor_printf(mon, "Status: %s\n", DumpStatus_lookup[result->status]); + + if (result->status == DUMP_STATUS_ACTIVE) { + float percent = 0; + assert(result->total != 0); + percent = 100.0 * result->completed / result->total; + monitor_printf(mon, "Finished: %.2f %%\n", percent); + } + + qapi_free_DumpQueryResult(result); +} diff --git a/hmp.h b/hmp.h index a8c5b5a..093d65f 100644 --- a/hmp.h +++ b/hmp.h @@ -131,5 +131,6 @@ void hmp_rocker(Monitor *mon, const QDict *qdict); void hmp_rocker_ports(Monitor *mon, const QDict *qdict); void hmp_rocker_of_dpa_flows(Monitor *mon, const QDict *qdict); void hmp_rocker_of_dpa_groups(Monitor *mon, const QDict *qdict); +void hmp_info_dump(Monitor *mon, const QDict *qdict); #endif
It will calculate percentage of finished work from completed and total. Signed-off-by: Peter Xu <peterx@redhat.com> --- hmp-commands-info.hx | 14 ++++++++++++++ hmp.c | 17 +++++++++++++++++ hmp.h | 1 + 3 files changed, 32 insertions(+)