btrfs-progs: unified error handling in print_replace_status

Current code of print_replace_status() mixed stdout and stderr in error
case, output a error string to stderr without "\n", then output "\n" to
stdout to end the line.

This patch fixed above problem by using unified error handle way for 3
type of errors in print_replace_status().

Also include some small logic cleanup.

Signed-off-by: Zhao Lei <zhaolei@cn.fujitsu.com>
Signed-off-by: David Sterba <dsterba@suse.com>
master
Zhao Lei 2015-08-25 22:50:08 +08:00 committed by David Sterba
parent 2d46558b30
commit 96fbc6a146
1 changed files with 7 additions and 8 deletions

View File

@ -417,7 +417,6 @@ static int print_replace_status(int fd, const char *path, int once)
return ret;
}
status = &args.status;
if (args.result != BTRFS_IOCTL_DEV_REPLACE_RESULT_NO_ERROR) {
fprintf(stderr, "ERROR: ioctl(DEV_REPLACE_STATUS) on \"%s\" returns error: %s\n",
path,
@ -425,6 +424,8 @@ static int print_replace_status(int fd, const char *path, int once)
return -1;
}
status = &args.status;
skip_stats = 0;
num_chars = 0;
switch (status->replace_state) {
@ -469,12 +470,10 @@ static int print_replace_status(int fd, const char *path, int once)
printf("Never started");
break;
default:
prevent_loop = 1;
fprintf(stderr,
"Unknown btrfs dev replace status:%llu",
status->replace_state);
ret = -EINVAL;
break;
"ERROR: ioctl(DEV_REPLACE_STATUS) on \"%s\" got unknown status: %llu\n",
path, status->replace_state);
return -EINVAL;
}
if (!skip_stats)
@ -483,9 +482,9 @@ static int print_replace_status(int fd, const char *path, int once)
(unsigned long long)status->num_write_errors,
(unsigned long long)
status->num_uncorrectable_read_errors);
if (once || prevent_loop || ret) {
if (once || prevent_loop) {
printf("\n");
return ret;
break;
}
fflush(stdout);