mirror of
https://git.kernel.org/pub/scm/linux/kernel/git/kdave/btrfs-progs.git
synced 2025-01-23 20:23:20 +08:00
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 <zhaolei@cn.fujitsu.com> Signed-off-by: David Sterba <dsterba@suse.com>
This commit is contained in:
parent
2dfb710803
commit
d0c0f90b38
@ -901,10 +901,8 @@ int cmd_filesystem_usage(int argc, char **argv)
|
||||
int chunkcount = 0;
|
||||
int devcount = 0;
|
||||
|
||||
fd = open_file_or_dir(argv[i], &dirstream);
|
||||
fd = btrfs_open_dir(argv[i], &dirstream, 1);
|
||||
if (fd < 0) {
|
||||
fprintf(stderr, "ERROR: can't access '%s'\n",
|
||||
argv[i]);
|
||||
ret = 1;
|
||||
goto out;
|
||||
}
|
||||
|
@ -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));
|
||||
|
Loading…
Reference in New Issue
Block a user