git://git.onelab.eu
/
linux-2.6.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
This commit was manufactured by cvs2svn to create tag
[linux-2.6.git]
/
fs
/
read_write.c
diff --git
a/fs/read_write.c
b/fs/read_write.c
index
7bf9572
..
0515f7b
100644
(file)
--- a/
fs/read_write.c
+++ b/
fs/read_write.c
@@
-76,12
+76,14
@@
loff_t remote_llseek(struct file *file, loff_t offset, int origin)
unlock_kernel();
return retval;
}
unlock_kernel();
return retval;
}
+
EXPORT_SYMBOL(remote_llseek);
loff_t no_llseek(struct file *file, loff_t offset, int origin)
{
return -ESPIPE;
}
EXPORT_SYMBOL(remote_llseek);
loff_t no_llseek(struct file *file, loff_t offset, int origin)
{
return -ESPIPE;
}
+
EXPORT_SYMBOL(no_llseek);
loff_t default_llseek(struct file *file, loff_t offset, int origin)
EXPORT_SYMBOL(no_llseek);
loff_t default_llseek(struct file *file, loff_t offset, int origin)
@@
-107,21
+109,18
@@
loff_t default_llseek(struct file *file, loff_t offset, int origin)
unlock_kernel();
return retval;
}
unlock_kernel();
return retval;
}
+
EXPORT_SYMBOL(default_llseek);
EXPORT_SYMBOL(default_llseek);
-
loff_t vfs_
llseek(struct file *file, loff_t offset, int origin)
+
static inline loff_t
llseek(struct file *file, loff_t offset, int origin)
{
loff_t (*fn)(struct file *, loff_t, int);
{
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);
}
return fn(file, offset, origin);
}
-EXPORT_SYMBOL(vfs_llseek);
asmlinkage off_t sys_lseek(unsigned int fd, off_t offset, unsigned int origin)
{
asmlinkage off_t sys_lseek(unsigned int fd, off_t offset, unsigned int origin)
{
@@
-136,7
+135,7
@@
asmlinkage off_t sys_lseek(unsigned int fd, off_t offset, unsigned int origin)
retval = -EINVAL;
if (origin <= 2) {
retval = -EINVAL;
if (origin <= 2) {
- loff_t res =
vfs_
llseek(file, offset, origin);
+ loff_t res = llseek(file, offset, origin);
retval = res;
if (res != (loff_t)retval)
retval = -EOVERFLOW; /* LFS: should only happen on 32 bit platforms */
retval = res;
if (res != (loff_t)retval)
retval = -EOVERFLOW; /* LFS: should only happen on 32 bit platforms */
@@
-165,7
+164,7
@@
asmlinkage long sys_llseek(unsigned int fd, unsigned long offset_high,
if (origin > 2)
goto out_putf;
if (origin > 2)
goto out_putf;
- offset =
vfs_
llseek(file, ((loff_t) offset_high << 32) | offset_low,
+ offset = llseek(file, ((loff_t) offset_high << 32) | offset_low,
origin);
retval = (int)offset;
origin);
retval = (int)offset;
@@
-269,16
+268,6
@@
ssize_t vfs_write(struct file *file, const char __user *buf, size_t count, loff_
EXPORT_SYMBOL(vfs_write);
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;
asmlinkage ssize_t sys_read(unsigned int fd, char __user * buf, size_t count)
{
struct file *file;
@@
-287,9
+276,7
@@
asmlinkage ssize_t sys_read(unsigned int fd, char __user * buf, size_t count)
file = fget_light(fd, &fput_needed);
if (file) {
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);
}
fput_light(file, fput_needed);
}
@@
-304,9
+291,7
@@
asmlinkage ssize_t sys_write(unsigned int fd, const char __user * buf, size_t co
file = fget_light(fd, &fput_needed);
if (file) {
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);
}
fput_light(file, fput_needed);
}
@@
-325,9
+310,7
@@
asmlinkage ssize_t sys_pread64(unsigned int fd, char __user *buf,
file = fget_light(fd, &fput_needed);
if (file) {
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);
}
fput_light(file, fput_needed);
}
@@
-346,9
+329,7
@@
asmlinkage ssize_t sys_pwrite64(unsigned int fd, const char __user *buf,
file = fget_light(fd, &fput_needed);
if (file) {
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);
}
fput_light(file, fput_needed);
}
@@
-532,9
+513,7
@@
sys_readv(unsigned long fd, const struct iovec __user *vec, unsigned long vlen)
file = fget_light(fd, &fput_needed);
if (file) {
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);
}
fput_light(file, fput_needed);
}
@@
-550,9
+529,7
@@
sys_writev(unsigned long fd, const struct iovec __user *vec, unsigned long vlen)
file = fget_light(fd, &fput_needed);
if (file) {
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);
}
fput_light(file, fput_needed);
}
@@
-583,12
+560,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;
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;
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;
retval = locks_verify_area(FLOCK_VERIFY_READ, in_inode, in_file, *ppos, count);
if (retval)
goto fput_in;