The forwarding look in tcp_splice_forward() has a retry label that we goto
in some cases. However, the only difference between a 'goto retry' and
a 'continue' is that the 'continue' will reset the 'more' variable to 0.
The fist goto retry only occurs if never_read is set, which can only be
the case if we never changed 'more' in the first place, so is strictly
equivalent to a continue. In the second case, 'more' can be set though.
'more' is set by a heuristic that if we're able to read most of a pipe's
worth of data at once, there's probably more coming, so we should prepare
the write-side for that. However, on a goto retry we have a new read side
splice. If this time we *don't* get most of a pipe's worth of data, that
suggests that contrary to expectations from the previous loop we have now
temporarily run out of input data and so SPLICE_F_MORE is no longer
a good guess for the next write side splice(). In other words, the second
read-splice() gives us better data for the heuristic than keeping our guess
from the first one, so resetting 'more' is valuable.
So, we could replace both gotos with continues. But they're already at the
end the loop body, so a continue is a no-op. Just remove them. That, in
turn removes the need for the never_read variable.
Signed-off-by: David Gibson