Commit 82aa5d61 authored by Jens Axboe's avatar Jens Axboe

[PATCH] splice: fix smaller sized splice reads

Signed-off-by: default avatarJens Axboe <axboe@suse.de>
parent a0aa7f68
...@@ -275,6 +275,15 @@ __generic_file_splice_read(struct file *in, loff_t *ppos, ...@@ -275,6 +275,15 @@ __generic_file_splice_read(struct file *in, loff_t *ppos,
error = 0; error = 0;
bytes = 0; bytes = 0;
for (i = 0; i < nr_pages; i++, index++) { for (i = 0; i < nr_pages; i++, index++) {
unsigned int this_len;
if (!len)
break;
/*
* this_len is the max we'll use from this page
*/
this_len = min(len, PAGE_CACHE_SIZE - loff);
find_page: find_page:
/* /*
* lookup the page for this index * lookup the page for this index
...@@ -366,11 +375,13 @@ readpage: ...@@ -366,11 +375,13 @@ readpage:
* force quit after adding this page * force quit after adding this page
*/ */
nr_pages = i; nr_pages = i;
this_len = min(this_len, loff);
} }
} }
fill_it: fill_it:
pages[i] = page; pages[i] = page;
bytes += PAGE_CACHE_SIZE - loff; bytes += this_len;
len -= this_len;
loff = 0; loff = 0;
} }
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment