btrfs-progs: remove open_file_or_dir3 from du_add_file

For historical reasons the helpers [btrfs_]open_dir... return also
the 'DIR *dirstream' value when a directory is opened.

However this is never used. So avoid calling diropen() and return
only the fd.

Replace the last reference to btrfs_open_file_or_dir3() with
btrfs_open_fd2().

Signed-off-by: Goffredo Baroncelli <kreijack@libero.it>
Signed-off-by: David Sterba <dsterba@suse.com>
This commit is contained in:
Goffredo Baroncelli 2024-02-08 21:19:26 +01:00 committed by David Sterba
parent 6a08424a50
commit 89867394e5
1 changed files with 16 additions and 2 deletions

View File

@ -456,7 +456,7 @@ static int du_add_file(const char *filename, int dirfd,
ret = sprintf(pathp, "/%s", filename);
pathp += ret;
fd = open_file_or_dir3(path, &dirstream, O_RDONLY);
fd = btrfs_open_fd2(path, false, false, false);
if (fd < 0) {
ret = -errno;
goto out;
@ -489,6 +489,12 @@ static int du_add_file(const char *filename, int dirfd,
} else if (S_ISDIR(st.st_mode)) {
struct rb_root *root = shared_extents;
dirstream = fdopendir(fd);
if (!dirstream) {
ret = -errno;
goto out_close;
}
/*
* We collect shared extents in an rb_root, the top
* level caller will not pass a root down, so use the
@ -542,7 +548,15 @@ static int du_add_file(const char *filename, int dirfd,
*ret_shared = file_shared;
out_close:
close_file_or_dir(fd, dirstream);
/*
* If dirstream is not NULL, it is derived from fd, so it is enough to
* close the former.
*/
if (dirstream)
closedir(dirstream);
else
close(fd);
out:
/* reset path to just before this element */
pathp = pathtmp;