projects
/
linux.git
/ commitdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
| commitdiff |
tree
raw
|
patch
| inline |
side by side
(parent:
a01e035
)
relay: fix splice problem
author
Tom Zanussi
<zanussi@comcast.ne>
Thu, 24 Apr 2008 10:52:20 +0000
(12:52 +0200)
committer
Jens Axboe
<jens.axboe@oracle.com>
Tue, 29 Apr 2008 07:48:15 +0000
(09:48 +0200)
Splice isn't always incrementing the ppos correctly, which broke
relay splice.
Signed-off-by: Tom Zanussi <zanussi@comcast.net>
Signed-off-by: Jens Axboe <jens.axboe@oracle.com>
fs/splice.c
patch
|
blob
|
history
kernel/relay.c
patch
|
blob
|
history
diff --git
a/fs/splice.c
b/fs/splice.c
index eeb1a86a701467fcc90882f803ff7b39585003fc..633f58ebfb72a2ad7b132adb7492f7c268daecca 100644
(file)
--- a/
fs/splice.c
+++ b/
fs/splice.c
@@
-1075,7
+1075,7
@@
long do_splice_direct(struct file *in, loff_t *ppos, struct file *out,
ret = splice_direct_to_actor(in, &sd, direct_splice_actor);
if (ret > 0)
- *ppos
+= ret
;
+ *ppos
= sd.pos
;
return ret;
}
diff --git
a/kernel/relay.c
b/kernel/relay.c
index d6204a4858183c754d5d401ad230c11f60a546c1..dc873fba90d27c74fa145f1df6caec132225c7eb 100644
(file)
--- a/
kernel/relay.c
+++ b/
kernel/relay.c
@@
-1162,7
+1162,7
@@
static ssize_t relay_file_splice_read(struct file *in,
ret = 0;
spliced = 0;
- while (len) {
+ while (len
&& !spliced
) {
ret = subbuf_splice_actor(in, ppos, pipe, len, flags, &nonpad_ret);
if (ret < 0)
break;