On 10/25/2013 10:57 AM, Jingbai Ma wrote: > On 10/25/2013 09:45 AM, HATAYAMA Daisuke wrote: >> On system with huge memory, percentage in progress information is >> updated at very slow interval, because 1 percent on 1 TiB memory is >> about 10 GiB, which looks like as if system has freezed. Then, >> confused users might get tempted to push a reset button to recover the >> system. We want to avoid such situation as much as possible. >> >> To address the issue, this patch adds spinner that rotates in the >> order of /, |, \ and - next to the progress indicator in percentage, >> which helps users to get aware that system is still active and crash >> dump process is still in progress now. >> >> This code is borrowed from diskdump code. >> >> The example is like this: >> >> Copying data : [ 0 %] / >> Copying data : [ 8 %] | >> Copying data : [ 11 %] \ >> Copying data : [ 14 %] - >> Copying data : [ 16 %] / >> ... >> Copying data : [ 99 %] / >> Copying data : [100 %] | >> >> Signed-off-by: HATAYAMA Daisuke<d.hatayama at jp.fujitsu.com> >> --- >> print_info.c | 11 +++++++---- >> 1 file changed, 7 insertions(+), 4 deletions(-) >> >> diff --git a/print_info.c b/print_info.c >> index 3527970..879fa4b 100644 >> --- a/print_info.c >> +++ b/print_info.c >> @@ -286,6 +286,8 @@ print_progress(const char *msg, unsigned long >> current, unsigned long end) >> int progress; >> time_t tm; >> static time_t last_time = 0; >> + static unsigned int lapse = 0; >> + const char *spinner = "/|\\-"; > > I believe your spinner should be: > const char *spinner = "/|\-/|\-"; > Oh, it seems not a full round, this one should be better: const char *spinner = "/|\-"; >> >> if (current< end) { >> tm = time(NULL); >> @@ -297,13 +299,14 @@ print_progress(const char *msg, unsigned long >> current, unsigned long end) >> progress = 100; >> >> if (flag_ignore_r_char) { >> - PROGRESS_MSG("%-" PROGRESS_MAXLEN "s: [%3d %%]\n", >> - msg, progress); >> + PROGRESS_MSG("%-" PROGRESS_MAXLEN "s: [%3d %%] %c\n", >> + msg, progress, spinner[lapse& 3]); And then, this line should be: msg, progress, spinner[lapse % 4]); >> } else { >> PROGRESS_MSG("\r"); >> - PROGRESS_MSG("%-" PROGRESS_MAXLEN "s: [%3d %%] ", >> - msg, progress); >> + PROGRESS_MSG("%-" PROGRESS_MAXLEN "s: [%3d %%] %c", >> + msg, progress, spinner[lapse& 3]); This line too: msg, progress, spinner[lapse % 4]); >> } >> + lapse++; >> } >> >> void > > -- Thanks, Jingbai Ma