This commit was manufactured by cvs2svn to create tag
[linux-2.6.git] / fs / read_write.c
index 7bf9572..bf99867 100644 (file)
@@ -113,12 +113,9 @@ loff_t vfs_llseek(struct file *file, loff_t offset, int origin)
 {
        loff_t (*fn)(struct file *, loff_t, int);
 
-       fn = no_llseek;
-       if (file->f_mode & FMODE_LSEEK) {
-               fn = default_llseek;
-               if (file->f_op && file->f_op->llseek)
-                       fn = file->f_op->llseek;
-       }
+       fn = default_llseek;
+       if (file->f_op && file->f_op->llseek)
+               fn = file->f_op->llseek;
        return fn(file, offset, origin);
 }
 EXPORT_SYMBOL(vfs_llseek);
@@ -269,16 +266,6 @@ ssize_t vfs_write(struct file *file, const char __user *buf, size_t count, loff_
 
 EXPORT_SYMBOL(vfs_write);
 
-static inline loff_t file_pos_read(struct file *file)
-{
-       return file->f_pos;
-}
-
-static inline void file_pos_write(struct file *file, loff_t pos)
-{
-       file->f_pos = pos;
-}
-
 asmlinkage ssize_t sys_read(unsigned int fd, char __user * buf, size_t count)
 {
        struct file *file;
@@ -287,9 +274,7 @@ asmlinkage ssize_t sys_read(unsigned int fd, char __user * buf, size_t count)
 
        file = fget_light(fd, &fput_needed);
        if (file) {
-               loff_t pos = file_pos_read(file);
-               ret = vfs_read(file, buf, count, &pos);
-               file_pos_write(file, pos);
+               ret = vfs_read(file, buf, count, &file->f_pos);
                fput_light(file, fput_needed);
        }
 
@@ -304,9 +289,7 @@ asmlinkage ssize_t sys_write(unsigned int fd, const char __user * buf, size_t co
 
        file = fget_light(fd, &fput_needed);
        if (file) {
-               loff_t pos = file_pos_read(file);
-               ret = vfs_write(file, buf, count, &pos);
-               file_pos_write(file, pos);
+               ret = vfs_write(file, buf, count, &file->f_pos);
                fput_light(file, fput_needed);
        }
 
@@ -325,9 +308,7 @@ asmlinkage ssize_t sys_pread64(unsigned int fd, char __user *buf,
 
        file = fget_light(fd, &fput_needed);
        if (file) {
-               ret = -ESPIPE;
-               if (file->f_mode & FMODE_PREAD)
-                       ret = vfs_read(file, buf, count, &pos);
+               ret = vfs_read(file, buf, count, &pos);
                fput_light(file, fput_needed);
        }
 
@@ -346,9 +327,7 @@ asmlinkage ssize_t sys_pwrite64(unsigned int fd, const char __user *buf,
 
        file = fget_light(fd, &fput_needed);
        if (file) {
-               ret = -ESPIPE;
-               if (file->f_mode & FMODE_PWRITE)  
-                       ret = vfs_write(file, buf, count, &pos);
+               ret = vfs_write(file, buf, count, &pos);
                fput_light(file, fput_needed);
        }
 
@@ -532,9 +511,7 @@ sys_readv(unsigned long fd, const struct iovec __user *vec, unsigned long vlen)
 
        file = fget_light(fd, &fput_needed);
        if (file) {
-               loff_t pos = file_pos_read(file);
-               ret = vfs_readv(file, vec, vlen, &pos);
-               file_pos_write(file, pos);
+               ret = vfs_readv(file, vec, vlen, &file->f_pos);
                fput_light(file, fput_needed);
        }
 
@@ -550,9 +527,7 @@ sys_writev(unsigned long fd, const struct iovec __user *vec, unsigned long vlen)
 
        file = fget_light(fd, &fput_needed);
        if (file) {
-               loff_t pos = file_pos_read(file);
-               ret = vfs_writev(file, vec, vlen, &pos);
-               file_pos_write(file, pos);
+               ret = vfs_writev(file, vec, vlen, &file->f_pos);
                fput_light(file, fput_needed);
        }
 
@@ -583,12 +558,8 @@ static ssize_t do_sendfile(int out_fd, int in_fd, loff_t *ppos,
                goto fput_in;
        if (!in_file->f_op || !in_file->f_op->sendfile)
                goto fput_in;
-       retval = -ESPIPE;
        if (!ppos)
                ppos = &in_file->f_pos;
-       else
-               if (!(in_file->f_mode & FMODE_PREAD))
-                       goto fput_in;
        retval = locks_verify_area(FLOCK_VERIFY_READ, in_inode, in_file, *ppos, count);
        if (retval)
                goto fput_in;