Hi, The original bug-reporter verified that my patch fixes the bug. See
https://bugzilla.kernel.org/show_bug.cgi?id=195597 Christian On Sat, Apr 29, 2017 at 11:54:05PM +0200, Christian Brauner wrote: > Returning -ENODATA is only considered invalid on the first run of the loop. > > Signed-off-by: Christian Brauner <christian.brau...@ubuntu.com> > --- > cmds-receive.c | 20 ++++++++++++++------ > 1 file changed, 14 insertions(+), 6 deletions(-) > > diff --git a/cmds-receive.c b/cmds-receive.c > index b59f00e4..72e9c8f3 100644 > --- a/cmds-receive.c > +++ b/cmds-receive.c > @@ -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; > > -- > 2.11.0 > -- To unsubscribe from this list: send the line "unsubscribe linux-btrfs" in the body of a message to majord...@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html