diff --git a/cmds-scrub.c b/cmds-scrub.c index 55da4055..605af45b 100644 --- a/cmds-scrub.c +++ b/cmds-scrub.c @@ -1018,7 +1018,7 @@ static int mkdir_p(char *path) path[i] = '\0'; ret = mkdir(path, 0777); if (ret && errno != EEXIST) - return 1; + return -errno; path[i] = '/'; } @@ -1155,7 +1155,7 @@ static int scrub_start(int argc, char **argv, int resume) if (fdmnt < 0) { ERR(!do_quiet, "ERROR: can't access '%s'\n", path); - return 12; + return 1; } ret = get_fs_info(path, &fi_args, &di_args); @@ -1261,8 +1261,7 @@ static int scrub_start(int argc, char **argv, int resume) if (!do_quiet) printf("scrub: nothing to resume for %s, fsid %s\n", path, fsid); - err = 0; - goto out; + return 2; } ret = prg_fd = socket(AF_UNIX, SOCK_STREAM, 0); @@ -1501,9 +1500,9 @@ out: if (err) return 1; if (e_correctable) - return 7; + return 3; if (e_uncorrectable) - return 8; + return 4; return 0; } @@ -1557,7 +1556,10 @@ static int cmd_scrub_cancel(int argc, char **argv) if (ret < 0) { fprintf(stderr, "ERROR: scrub cancel failed on %s: %s\n", path, errno == ENOTCONN ? "not running" : strerror(errno)); - ret = 1; + if (errno == ENOTCONN) + ret = 2; + else + ret = 1; goto out; } @@ -1642,7 +1644,7 @@ static int cmd_scrub_status(int argc, char **argv) if (fdmnt < 0) { fprintf(stderr, "ERROR: can't access to '%s'\n", path); - return 12; + return 1; } ret = get_fs_info(path, &fi_args, &di_args); @@ -1727,7 +1729,7 @@ out: close(fdres); close_file_or_dir(fdmnt, dirstream); - return err; + return !!err; } const struct cmd_group scrub_cmd_group = {