Code Review
/
kvmfornfv.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
review
|
tree
raw
|
inline
| side by side
These changes are the raw update to linux-4.4.6-rt14. Kernel sources
[kvmfornfv.git]
/
kernel
/
fs
/
splice.c
diff --git
a/kernel/fs/splice.c
b/kernel/fs/splice.c
index
bfe62ae
..
4cf700d
100644
(file)
--- a/
kernel/fs/splice.c
+++ b/
kernel/fs/splice.c
@@
-261,6
+261,7
@@
ssize_t splice_to_pipe(struct pipe_inode_info *pipe,
return ret;
}
return ret;
}
+EXPORT_SYMBOL_GPL(splice_to_pipe);
void spd_release_page(struct splice_pipe_desc *spd, unsigned int i)
{
void spd_release_page(struct splice_pipe_desc *spd, unsigned int i)
{
@@
-359,7
+360,7
@@
__generic_file_splice_read(struct file *in, loff_t *ppos,
break;
error = add_to_page_cache_lru(page, mapping, index,
break;
error = add_to_page_cache_lru(page, mapping, index,
-
GFP_KERNEL
);
+
mapping_gfp_constraint(mapping, GFP_KERNEL)
);
if (unlikely(error)) {
page_cache_release(page);
if (error == -EEXIST)
if (unlikely(error)) {
page_cache_release(page);
if (error == -EEXIST)
@@
-808,6
+809,13
@@
static int splice_from_pipe_feed(struct pipe_inode_info *pipe, struct splice_des
*/
static int splice_from_pipe_next(struct pipe_inode_info *pipe, struct splice_desc *sd)
{
*/
static int splice_from_pipe_next(struct pipe_inode_info *pipe, struct splice_desc *sd)
{
+ /*
+ * Check for signal early to make process killable when there are
+ * always buffers available
+ */
+ if (signal_pending(current))
+ return -ERESTARTSYS;
+
while (!pipe->nrbufs) {
if (!pipe->writers)
return 0;
while (!pipe->nrbufs) {
if (!pipe->writers)
return 0;
@@
-883,6
+891,7
@@
ssize_t __splice_from_pipe(struct pipe_inode_info *pipe, struct splice_desc *sd,
splice_from_pipe_begin(sd);
do {
splice_from_pipe_begin(sd);
do {
+ cond_resched();
ret = splice_from_pipe_next(pipe, sd);
if (ret > 0)
ret = splice_from_pipe_feed(pipe, sd, actor);
ret = splice_from_pipe_next(pipe, sd);
if (ret > 0)
ret = splice_from_pipe_feed(pipe, sd, actor);