btrfs-util: convert to fd_reopen_condition()
authorLennart Poettering <lennart@poettering.net>
Tue, 29 Nov 2022 14:30:55 +0000 (15:30 +0100)
committerLennart Poettering <lennart@poettering.net>
Tue, 29 Nov 2022 14:33:51 +0000 (15:33 +0100)
src/shared/btrfs-util.c

index 4574a7899e1cfd3eaa67240ac9f62201c5af8707..41e01e0b10de259c19599aaf8cc4c69bd23a1afd 100644 (file)
@@ -107,19 +107,11 @@ int btrfs_subvol_make_fd(int fd, const char *subvolume) {
         if (r < 0)
                 return r;
 
-        r = fcntl(fd, F_GETFL);
-        if (r < 0)
-                return -errno;
-        if (FLAGS_SET(r, O_PATH)) {
-                /* An O_PATH fd was specified, let's convert here to a proper one, as btrfs ioctl's can't deal with
-                 * O_PATH. */
-
-                real_fd = fd_reopen(fd, O_RDONLY|O_CLOEXEC|O_DIRECTORY);
-                if (real_fd < 0)
-                        return real_fd;
-
-                fd = real_fd;
-        }
+        /* If an O_PATH fd was specified, let's convert here to a proper one, as btrfs ioctl's can't deal
+         * with O_PATH. */
+        fd = fd_reopen_condition(fd, O_RDONLY|O_CLOEXEC|O_DIRECTORY, O_PATH|O_DIRECTORY, &real_fd);
+        if (fd < 0)
+                return fd;
 
         strncpy(args.name, subvolume, sizeof(args.name)-1);