mirror of
https://github.com/kdave/btrfs-progs
synced 2025-02-03 11:21:45 +00:00
btrfs-progs: receiv: fail on first -ENODATA only
Returning -ENODATA is only considered invalid on the first run of the loop where we would detect entirely empty stream. The enhanced test misc-tests/018-recv-end-of-stream now passes. Bugzilla: https://bugzilla.kernel.org/show_bug.cgi?id=195597 Signed-off-by: Christian Brauner <christian.brauner@ubuntu.com> Signed-off-by: David Sterba <dsterba@suse.com>
This commit is contained in:
parent
f8c82394c4
commit
9845d93bb2
@ -1091,6 +1091,7 @@ static int do_receive(struct btrfs_receive *rctx, const char *tomnt,
|
||||
char *dest_dir_full_path;
|
||||
char root_subvol_path[PATH_MAX];
|
||||
int end = 0;
|
||||
int iterations = 0;
|
||||
|
||||
dest_dir_full_path = realpath(tomnt, NULL);
|
||||
if (!dest_dir_full_path) {
|
||||
@ -1198,13 +1199,18 @@ static int do_receive(struct btrfs_receive *rctx, const char *tomnt,
|
||||
rctx,
|
||||
rctx->honor_end_cmd,
|
||||
max_errors);
|
||||
if (ret < 0 && ret == -ENODATA) {
|
||||
if (ret < 0) {
|
||||
if (ret != -ENODATA)
|
||||
goto out;
|
||||
|
||||
/* Empty stream is invalid */
|
||||
error("empty stream is not considered valid");
|
||||
ret = -EINVAL;
|
||||
goto out;
|
||||
} else if (ret < 0) {
|
||||
goto out;
|
||||
if (iterations == 0) {
|
||||
error("empty stream is not considered valid");
|
||||
ret = -EINVAL;
|
||||
goto out;
|
||||
}
|
||||
|
||||
ret = 1;
|
||||
}
|
||||
if (ret > 0)
|
||||
end = 1;
|
||||
@ -1213,6 +1219,8 @@ static int do_receive(struct btrfs_receive *rctx, const char *tomnt,
|
||||
ret = finish_subvol(rctx);
|
||||
if (ret < 0)
|
||||
goto out;
|
||||
|
||||
iterations++;
|
||||
}
|
||||
ret = 0;
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user