[sheepdog] [PATCH 1/2] collie: show progress in an output of node recovery

Hitoshi Mitake mitake.hitoshi at gmail.com
Thu Aug 8 04:18:22 CEST 2013


At Thu, 8 Aug 2013 10:12:39 +0800,
Liu Yuan wrote:
> 
> On Thu, Aug 08, 2013 at 10:52:07AM +0900, Hitoshi Mitake wrote:
> > This patch lets collie output recovery progress. Below is an example
> > of a new output.
> > 
> >   Id   Host:Port         V-Nodes       Zone       Progress
> >    0   10.68.13.1:7000        64   17646602       56.3%
> >    1   10.68.13.2:7000        64   34423818       37.2%
> >    2   10.68.13.3:7000        64   51201034       18.1%
> >    3   10.68.13.4:7000        64   67978250       68.9%
> >    4   10.68.13.5:7000        64   84755466        3.9%
> >    5   10.68.13.6:7000        64  101532682       52.6%
> >    6   10.68.13.7:7000        64  118309898       77.9%
> >    7   10.68.13.8:7000        64  135087114       38.9%
> >    8   10.68.13.9:7000        64  151864330        8.7%
> >    9   10.68.13.10:7000       64  168641546       97.1%
> >   10   10.68.13.11:7000       64  185418762        1.1%
> >   11   10.68.13.12:7000       64  202195978       25.6%
> > 
> > Signed-off-by: Hitoshi Mitake <mitake.hitoshi at lab.ntt.co.jp>
> > ---
> >  collie/node.c |   22 ++++++++++++++++++----
> >  1 file changed, 18 insertions(+), 4 deletions(-)
> > 
> > diff --git a/collie/node.c b/collie/node.c
> > index 0ab665d..3fe5eb9 100644
> > --- a/collie/node.c
> > +++ b/collie/node.c
> > @@ -206,7 +206,8 @@ static int node_recovery(int argc, char **argv)
> >  
> >  	if (!raw_output) {
> >  		printf("Nodes In Recovery:\n");
> > -		printf("  Id   Host:Port         V-Nodes       Zone\n");
> > +		printf("  Id   Host:Port         V-Nodes       Zone"
> > +		       "       Progress\n");
> >  	}
> >  
> >  	for (i = 0; i < sd_nodes_nr; i++) {
> > @@ -227,9 +228,22 @@ static int node_recovery(int argc, char **argv)
> >  		if (state.in_recovery) {
> >  			addr_to_str(host, sizeof(host),
> >  					sd_nodes[i].nid.addr, sd_nodes[i].nid.port);
> > -			printf(raw_output ? "%d %s %d %d\n" : "%4d   %-20s%5d%11d\n",
> > -				   i, host, sd_nodes[i].nr_vnodes,
> > -				   sd_nodes[i].zone);
> > +			if (raw_output) {
> > +				printf("%d %s %d %d %"PRIu64" %"PRIu64"\n", i,
> > +				       host, sd_nodes[i].nr_vnodes,
> > +				       sd_nodes[i].zone, state.nr_finished,
> > +				       state.nr_total);
> 
> isn't better to print state.nr_finished/state.nr_total for the last field?

I don't think so. Because users of raw output are program. If they
want percentage, they should caliculate it by themselves. We should
provide preserve information as much as possible.

> 	
> > +			} else {
> > +				printf("%4d   %-20s%5d%11d", i, host,
> > +				       sd_nodes[i].nr_vnodes, sd_nodes[i].zone);
> > +
> > +				if (state.in_recovery)
> 
> This if check isn't necessary.

Oops.. thanks for your comment. I'll fix it in v2.

BTW, could you apply 2/2 of this series? The second one is very
trivial and can be applied independently.

Thanks,
Hitoshi



More information about the sheepdog mailing list