splice: fix offset mangling with direct splicing (sendfile)
authorJens Axboe <jens.axboe@oracle.com>
Fri, 13 Jul 2007 12:11:43 +0000 (14:11 +0200)
committerJens Axboe <jens.axboe@oracle.com>
Fri, 13 Jul 2007 12:14:31 +0000 (14:14 +0200)
commit51a92c0f6ce8fa85fa0e18ecda1d847e606e8066
treeb944b46d3856948931160c8a75ee27be3417c515
parent29ce20586be54ceba49c55ae049541398cd2c416
splice: fix offset mangling with direct splicing (sendfile)

If the output actor doesn't transfer the full amount of data, we will
increment ppos too much. Two related bugs in there:

- We need to break out and return actor() retval if it is shorted than
  what we spliced into the pipe.

- Adjust ppos only according to actor() return.

Also fix loop problem in generic_file_splice_read(), it should not keep
going when data has already been transferred.

Signed-off-by: Jens Axboe <jens.axboe@oracle.com>
fs/splice.c