Use btrfs_open_dir() instead of open_file_or_dir(), to show error before real action(in ioctl or tree search), to make the error message exact and unified.
It can also make code simple: 85 insertions(+), 185 deletions(-) Also include some small bug fix. Before patch: # grep open_file_or_dir *.c btrfs-fragments.c: fd = open_file_or_dir(path, &dirstream); cmds-balance.c: fd = open_file_or_dir(path, &dirstream); cmds-balance.c: fd = open_file_or_dir(path, &dirstream); cmds-balance.c: fd = open_file_or_dir(path, &dirstream); cmds-balance.c: fd = open_file_or_dir(path, &dirstream); cmds-balance.c: fd = open_file_or_dir(path, &dirstream); cmds-filesystem.c: fd = open_file_or_dir(path, &dirstream); cmds-filesystem.c: fd = open_file_or_dir(path, &dirstream); cmds-filesystem.c: fd = open_file_or_dir(argv[i], &dirstream); cmds-filesystem.c: fd = open_file_or_dir(path, &dirstream); cmds-fi-usage.c: fd = open_file_or_dir(argv[i], &dirstream); cmds-inspect.c: fd = open_file_or_dir(argv[optind+1], &dirstream); cmds-inspect.c: fd = open_file_or_dir(argv[optind+1], &dirstream); cmds-inspect.c: path_fd = open_file_or_dir(full_path, &dirs); cmds-inspect.c: fd = open_file_or_dir(argv[2], &dirstream); cmds-inspect.c: fd = open_file_or_dir(argv[1], &dirstream); cmds-inspect.c: fd = open_file_or_dir(argv[optind], &dirstream); cmds-qgroup.c: fd = open_file_or_dir(path, &dirstream); cmds-qgroup.c: fd = open_file_or_dir(path, &dirstream); cmds-qgroup.c: fd = open_file_or_dir(path, &dirstream); cmds-qgroup.c: fd = open_file_or_dir(path, &dirstream); cmds-quota.c: fd = open_file_or_dir(path, &dirstream); cmds-quota.c: fd = open_file_or_dir(path, &dirstream); cmds-replace.c: fd = open_file_or_dir(path, &dirstream); cmds-replace.c: fd = open_file_or_dir(path, &dirstream); cmds-subvolume.c: fddst = open_file_or_dir(dstdir, &dirstream); cmds-subvolume.c: fd = open_file_or_dir(dname, &dirstream); cmds-subvolume.c: fd = open_file_or_dir(subvol, &dirstream); cmds-subvolume.c: fddst = open_file_or_dir(dstdir, &dirstream1); cmds-subvolume.c: fd = open_file_or_dir(subvol, &dirstream2); cmds-subvolume.c: fd = open_file_or_dir(subvol, &dirstream); cmds-subvolume.c: fd = open_file_or_dir(path, &dirstream); cmds-subvolume.c: fd = open_file_or_dir(subvol, &dirstream); cmds-subvolume.c: fd = open_file_or_dir(fullpath, &dirstream1); cmds-subvolume.c: mntfd = open_file_or_dir(mnt, &dirstream2); cmds-subvolume.c: fd = open_file_or_dir(argv[optind], &dirstream); props.c: fd = open_file_or_dir3(object, &dirstream, open_flags); utils.c: fdmnt = open_file_or_dir(mp, dirstream); utils.c: fdmnt = open_file_or_dir(path, dirstream); utils.c: * Do the following checks before calling open_file_or_dir(): utils.c: ret = open_file_or_dir(path, dirstream); utils.c:int open_file_or_dir3(const char *fname, DIR **dirstream, int open_flags) utils.c:int open_file_or_dir(const char *fname, DIR **dirstream) utils.c: return open_file_or_dir3(fname, dirstream, O_RDWR); utils.c: fd = open_file_or_dir(path, &dirstream); # After patch: # grep open_file_or_dir *.c cmds-filesystem.c: fd = open_file_or_dir(argv[i], &dirstream); *1 props.c: fd = open_file_or_dir3(object, &dirstream, open_flags); utils.c: ret = open_file_or_dir(mp, dirstream); utils.c: * Do the following checks before calling open_file_or_dir(): utils.c: ret = open_file_or_dir(path, dirstream); utils.c:int open_file_or_dir3(const char *fname, DIR **dirstream, int open_flags) utils.c:int open_file_or_dir(const char *fname, DIR **dirstream) utils.c: return open_file_or_dir3(fname, dirstream, O_RDWR); utils.c: fd = open_file_or_dir(path, &dirstream); # *1: It is used to open dir or file, can not use btrfs_open_dir() instead. Zhao Lei (11): btrfs-progs: subvolume: use btrfs_open_dir for btrfs subvolume command btrfs-progs: filesystem: use btrfs_open_dir for btrfs filesystem command btrfs-progs: balance: use btrfs_open_dir for btrfs balance command btrfs-progs: inspect: Bypass unnecessary clean function in open_error btrfs-progs: inspect: set return value of error case btrfs-progs: inspect: use btrfs_open_dir for btrfs inspect command btrfs-progs: qgroup: use btrfs_open_dir for btrfs qgroup command btrfs-progs: quota: use btrfs_open_dir for btrfs quota command btrfs-progs: use btrfs_open_dir in open_path_or_dev_mnt btrfs-progs: replace: use btrfs_open_dir for btrfs replace command btrfs-progs: fragments: use btrfs_open_dir for btrfs-fragments command btrfs-fragments.c | 6 ++---- cmds-balance.c | 30 ++++++++++------------------- cmds-device.c | 13 ++----------- cmds-fi-usage.c | 4 +--- cmds-filesystem.c | 19 +++++++------------ cmds-inspect.c | 26 +++++++++----------------- cmds-qgroup.c | 24 ++++++++---------------- cmds-quota.c | 12 ++++-------- cmds-replace.c | 29 ++++++---------------------- cmds-scrub.c | 28 +++++----------------------- cmds-subvolume.c | 56 +++++++++++++++++++------------------------------------ utils.c | 21 +++++++++++---------- utils.h | 2 +- 13 files changed, 85 insertions(+), 185 deletions(-) -- 1.8.5.1 -- 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