diff options
Diffstat (limited to 'fs/splice.c')
-rw-r--r-- | fs/splice.c | 4 |
1 files changed, 3 insertions, 1 deletions
diff --git a/fs/splice.c b/fs/splice.c index f5d5a2b98563..cdad98678271 100644 --- a/fs/splice.c +++ b/fs/splice.c @@ -639,8 +639,10 @@ static int pipe_to_sendpage(struct pipe_inode_info *pipe, ret = buf->ops->confirm(pipe, buf); if (!ret) { more = (sd->flags & SPLICE_F_MORE) ? MSG_MORE : 0; - if (sd->len < sd->total_len) + + if (sd->len < sd->total_len && pipe->nrbufs > 1) more |= MSG_SENDPAGE_NOTLAST; + if (file->f_op && file->f_op->sendpage) ret = file->f_op->sendpage(file, buf->page, buf->offset, sd->len, &pos, more); |