diff options
author | Eric Sandeen <sandeen@redhat.com> | 2013-02-25 16:54:41 -0600 |
---|---|---|
committer | David Sterba <dsterba@suse.cz> | 2013-02-27 14:39:39 +0100 |
commit | d310e9cfffe0154d05ba2c8774241341307a6c76 (patch) | |
tree | 5ff94bfaf2e3fe6ff0af8e9ead330a4840b66412 /cmds-scrub.c | |
parent | 5eaeb577b563620f41735e0064d55ae41e969e78 (diff) |
btrfs-progs: more scrub cancel error handling
If we request scrub cancel on an unmounted or
non-btrfs device, we still get a "scrub canceled"
success message:
# btrfs scrub cancel /dev/loop1
scrub cancelled
# blkid /dev/loop1
/dev/loop1: UUID="7f586941-1d5e-4ba7-9caa-b35934849957" TYPE="xfs"
Fix this so that if check_mounted_where returns 0
we don't report success.
While we're at it, use perror to report the reason for an open
failure, if we get one.
Signed-off-by: Eric Sandeen <sandeen@redhat.com>
Diffstat (limited to 'cmds-scrub.c')
-rw-r--r-- | cmds-scrub.c | 15 |
1 files changed, 11 insertions, 4 deletions
diff --git a/cmds-scrub.c b/cmds-scrub.c index 353d9cb1..da4120f8 100644 --- a/cmds-scrub.c +++ b/cmds-scrub.c @@ -1451,7 +1451,7 @@ static int cmd_scrub_cancel(int argc, char **argv) again: fdmnt = open_file_or_dir(path); if (fdmnt < 0) { - fprintf(stderr, "ERROR: scrub cancel failed\n"); + perror("ERROR: scrub cancel failed:"); return 1; } @@ -1462,11 +1462,18 @@ again: /* path is not a btrfs mount point. See if it's a device. */ ret = check_mounted_where(fdmnt, path, mp, sizeof(mp), &fs_devices_mnt); - if (ret) { - /* It is a device; try again with the mountpoint. */ + if (ret > 0) { + /* It's a mounted btrfs device; retry w/ mountpoint. */ close(fdmnt); path = mp; goto again; + } else { + /* It's not a mounted btrfs device either */ + fprintf(stderr, + "ERROR: %s is not a mounted btrfs device\n", + path); + ret = 1; + err = EINVAL; } } @@ -1474,7 +1481,7 @@ again: if (ret) { fprintf(stderr, "ERROR: scrub cancel failed on %s: %s\n", path, - err == ENOTCONN ? "not running" : strerror(errno)); + err == ENOTCONN ? "not running" : strerror(err)); return 1; } |