summaryrefslogtreecommitdiff
path: root/cmd_fsck.c
diff options
context:
space:
mode:
Diffstat (limited to 'cmd_fsck.c')
-rw-r--r--cmd_fsck.c31
1 files changed, 21 insertions, 10 deletions
diff --git a/cmd_fsck.c b/cmd_fsck.c
index 736a4ca5..5756ee76 100644
--- a/cmd_fsck.c
+++ b/cmd_fsck.c
@@ -67,25 +67,36 @@ int cmd_fsck(int argc, char *argv[])
break;
case 'h':
usage();
- exit(EXIT_SUCCESS);
+ exit(16);
}
args_shift(optind);
- if (!argc)
- die("Please supply device(s) to check");
+ if (!argc) {
+ fprintf(stderr, "Please supply device(s) to check\n");
+ exit(8);
+ }
- for (i = 0; i < argc; i++)
- if (dev_mounted_rw(argv[i]))
- die("%s is mounted read-write - aborting", argv[i]);
+ for (i = 0; i < argc; i++) {
+ switch (dev_mounted(argv[i])) {
+ case 1:
+ ret |= 2;
+ break;
+ case 2:
+ fprintf(stderr, "%s is mounted read-write - aborting\n", argv[i]);
+ exit(8);
+ }
+ }
struct bch_fs *c = bch2_fs_open(argv, argc, opts);
- if (IS_ERR(c))
- die("error opening %s: %s", argv[0], strerror(-PTR_ERR(c)));
+ if (IS_ERR(c)) {
+ fprintf(stderr, "error opening %s: %s\n", argv[0], strerror(-PTR_ERR(c)));
+ exit(8);
+ }
if (test_bit(BCH_FS_ERRORS_FIXED, &c->flags))
- ret = 2;
+ ret |= 1;
if (test_bit(BCH_FS_ERROR, &c->flags))
- ret = 4;
+ ret |= 4;
bch2_fs_stop(c);
return ret;