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>
char *dest_dir_full_path;
char root_subvol_path[PATH_MAX];
int end = 0;
char *dest_dir_full_path;
char root_subvol_path[PATH_MAX];
int end = 0;
dest_dir_full_path = realpath(tomnt, NULL);
if (!dest_dir_full_path) {
dest_dir_full_path = realpath(tomnt, NULL);
if (!dest_dir_full_path) {
rctx,
rctx->honor_end_cmd,
max_errors);
rctx,
rctx->honor_end_cmd,
max_errors);
- if (ret < 0 && ret == -ENODATA) {
+ if (ret < 0) {
+ if (ret != -ENODATA)
+ goto out;
+
/* Empty stream is invalid */
/* 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;
ret = finish_subvol(rctx);
if (ret < 0)
goto out;
ret = finish_subvol(rctx);
if (ret < 0)
goto out;