patch-2.1.109 linux/mm/filemap.c
Next file: linux/mm/mmap.c
Previous file: linux/kernel/sched.c
Back to the patch index
Back to the overall index
- Lines: 49
- Date:
Wed Jul 15 16:35:31 1998
- Orig file:
v2.1.108/linux/mm/filemap.c
- Orig date:
Wed Jul 1 19:38:57 1998
diff -u --recursive --new-file v2.1.108/linux/mm/filemap.c linux/mm/filemap.c
@@ -125,8 +125,8 @@
struct buffer_head *tmp, *bh;
int count_max, count_min;
- count_max = (limit<<1) >> (priority>>1);
- count_min = (limit<<1) >> (priority);
+ count_max = (limit<<2) >> (priority>>1);
+ count_min = (limit<<2) >> (priority);
page = mem_map + clock;
do {
@@ -851,7 +851,7 @@
return written;
}
-asmlinkage ssize_t sys_sendfile(int out_fd, int in_fd, size_t count)
+asmlinkage ssize_t sys_sendfile(int out_fd, int in_fd, off_t *offset, size_t count)
{
ssize_t retval;
struct file * in_file, * out_file;
@@ -900,16 +900,27 @@
retval = 0;
if (count) {
read_descriptor_t desc;
+ loff_t pos = 0, *ppos;
+
+ retval = -EFAULT;
+ ppos = &in_file->f_pos;
+ if (offset) {
+ if (get_user(pos, offset))
+ goto fput_out;
+ ppos = &pos;
+ }
desc.written = 0;
desc.count = count;
desc.buf = (char *) out_file;
desc.error = 0;
- do_generic_file_read(in_file, &in_file->f_pos, &desc, file_send_actor);
+ do_generic_file_read(in_file, ppos, &desc, file_send_actor);
retval = desc.written;
if (!retval)
retval = desc.error;
+ if (offset)
+ put_user(pos, offset);
}
FUNET's LINUX-ADM group, linux-adm@nic.funet.fi
TCL-scripts by Sam Shen, slshen@lbl.gov