From: Wang Shilong <wangsl.f...@cn.fujitsu.com>

There will be four kinds of return value for command "scrub start":

0: scrub dosen't find errors and return success.
1: usage or syntax errors.
3: scrub finds errors and correct all of them.
4: scrub finds errors and some of them are not correctable.

Three kinds of return values for scrub cancel/resume:

0: cancel successfully.
1: usage or syntax errors.
2: cancel a not started or finished scrub.

Signed-off-by: Wang Shilong <wangsl.f...@cn.fujitsu.com>
---
 cmds-scrub.c | 20 +++++++++++---------
 1 file changed, 11 insertions(+), 9 deletions(-)

diff --git a/cmds-scrub.c b/cmds-scrub.c
index 55da405..605af45 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 = {
-- 
1.7.11.7

--
To unsubscribe from this list: send the line "unsubscribe linux-btrfs" in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html

Reply via email to