Re: 4.9.0 regression in pipe-backed iov_iter with systemd-nspawn

From: Linus Torvalds
Date: Fri Jan 13 2017 - 15:32:44 EST


On Fri, Jan 13, 2017 at 12:11 PM, Al Viro <viro@xxxxxxxxxxxxxxxxxx> wrote:
>
> PS: 'size' argument of iov_iter_advance() is the second "some" in the
> above - we tell it how much we want to advance by and everything past
> that point is, in case of PIPE_ITER, discarded.

Ok. The naming threw me. It would be more logical to call that
operation a "truncate", not advance.

I notice that one of the comments in fs/splice.c actually says that:

iov_iter_advance(&to, copied); /* truncates and discards */

but yes, I see what it's trying to do now.

Ugh. I still think your patch is butt-ugly, and the index comparisons
make me nervous, but..

Let's see if Alan's issue actually goes away with your later patch.

Linus