From d0c0f90b3885125c2c6e55eed097617a5f1baa15 Mon Sep 17 00:00:00 2001 From: Zhao Lei Date: Mon, 12 Oct 2015 21:22:55 +0800 Subject: btrfs-progs: filesystem: use btrfs_open_dir for btrfs filesystem command We can use btrfs_open_dir() to check whether target dir is in btrfs's mount point before open, instead of checking it in kernel space of ioctl, and return fuzzy error message. Before patch: # (/mnt/tmp is not btrfs mountpoint) # # btrfs filesystem df /mnt/tmp ERROR: couldn't get space info - Inappropriate ioctl for device ERROR: get_df failed Inappropriate ioctl for device # After patch: # ./btrfs filesystem df /mnt/tmp ERROR: not btrfs filesystem: /mnt/tmp # Signed-off-by: Zhao Lei Signed-off-by: David Sterba --- cmds-filesystem.c | 19 +++++++------------ 1 file changed, 7 insertions(+), 12 deletions(-) (limited to 'cmds-filesystem.c') diff --git a/cmds-filesystem.c b/cmds-filesystem.c index 36637347..91bf1fa0 100644 --- a/cmds-filesystem.c +++ b/cmds-filesystem.c @@ -205,11 +205,10 @@ static int cmd_filesystem_df(int argc, char **argv) path = argv[1]; - fd = open_file_or_dir(path, &dirstream); - if (fd < 0) { - fprintf(stderr, "ERROR: can't access '%s'\n", path); + fd = btrfs_open_dir(path, &dirstream, 1); + if (fd < 0) return 1; - } + ret = get_df(fd, &sargs); if (ret == 0) { @@ -939,11 +938,9 @@ static int cmd_filesystem_sync(int argc, char **argv) path = argv[1]; - fd = open_file_or_dir(path, &dirstream); - if (fd < 0) { - fprintf(stderr, "ERROR: can't access '%s'\n", path); + fd = btrfs_open_dir(path, &dirstream, 1); + if (fd < 0) return 1; - } printf("FSSync '%s'\n", path); res = ioctl(fd, BTRFS_IOC_SYNC); @@ -1229,11 +1226,9 @@ static int cmd_filesystem_resize(int argc, char **argv) return 1; } - fd = open_file_or_dir(path, &dirstream); - if (fd < 0) { - fprintf(stderr, "ERROR: can't access '%s'\n", path); + fd = btrfs_open_dir(path, &dirstream, 1); + if (fd < 0) return 1; - } printf("Resize '%s' of '%s'\n", path, amount); memset(&args, 0, sizeof(args)); -- cgit v1.2.3