]> git.sesse.net Git - bcachefs-tools-debian/blobdiff - c_src/cmd_fsck.c
Disable pristine-tar option in gbp.conf, since there is no pristine-tar branch.
[bcachefs-tools-debian] / c_src / cmd_fsck.c
index 802f44eaf2ea565a644948c090bfb5ef0d9c4feb..0d4070a3a1afadbd66b15a393d0e527c74916826 100644 (file)
@@ -70,15 +70,17 @@ static int splice_fd_to_stdinout(int fd)
                select(fd + 1, &fds, NULL, NULL, NULL);
 
                int r = do_splice(fd, STDOUT_FILENO);
+               if (r < 0)
+                       return r;
                if (r)
-                       return r < 0 ? r : 0;
+                       break;
 
                r = do_splice(STDIN_FILENO, fd);
                if (r < 0)
                        return r;
        }
 
-       return 0;
+       return close(fd);
 }
 
 static int fsck_online(const char *dev_path)
@@ -219,6 +221,8 @@ int cmd_fsck(int argc, char *argv[])
        if (kernel_probed < 0)
                kernel_probed = should_use_kernel_fsck(devs);
 
+       struct bch_opts opts = bch2_opts_empty();
+
        if (kernel_probed) {
                struct bch_ioctl_fsck_offline *fsck = calloc(sizeof(*fsck) +
                                                             sizeof(u64) * devs.nr, 1);
@@ -241,7 +245,6 @@ int cmd_fsck(int argc, char *argv[])
                ret = splice_fd_to_stdinout(fsck_fd);
        } else {
 userland_fsck:
-               struct bch_opts opts = bch2_opts_empty();
                ret = bch2_parse_mount_opts(NULL, &opts, opts_str.buf);
                if (ret)
                        return ret;