summaryrefslogtreecommitdiffstats
path: root/fs/read_write.c
diff options
context:
space:
mode:
authorRalf Baechle <ralf@linux-mips.org>1997-06-17 13:20:30 +0000
committerRalf Baechle <ralf@linux-mips.org>1997-06-17 13:20:30 +0000
commit7acb77a6e7bddd4c4c5aa975bbf976927c013798 (patch)
tree4139829ec6edb85f73774bb95cdec376758bfc73 /fs/read_write.c
parent64d58d4c8cd6a89ee218301ec0dc0ebfec91a4db (diff)
Merge with 2.1.43.
Diffstat (limited to 'fs/read_write.c')
-rw-r--r--fs/read_write.c7
1 files changed, 7 insertions, 0 deletions
diff --git a/fs/read_write.c b/fs/read_write.c
index dd4092301..81b19ac30 100644
--- a/fs/read_write.c
+++ b/fs/read_write.c
@@ -168,6 +168,7 @@ asmlinkage long sys_write(unsigned int fd, const char * buf, unsigned long count
goto out;
down(&inode->i_sem);
error = write(inode,file,buf,count);
+ inode->i_status |= ST_MODIFIED;
up(&inode->i_sem);
out:
fput(file, inode);
@@ -248,6 +249,10 @@ static long do_readv_writev(int type, struct inode * inode, struct file * file,
len = vector->iov_len;
vector++;
count--;
+
+ /* Any particular reason why we do not grab the inode semaphore
+ * when doing writes here? -DaveM
+ */
nr = fn(inode, file, base, len);
if (nr < 0) {
if (retval)
@@ -259,6 +264,8 @@ static long do_readv_writev(int type, struct inode * inode, struct file * file,
if (nr != len)
break;
}
+ if(fn == (IO_fn_t) file->f_op->write)
+ inode->i_status |= ST_MODIFIED;
if (iov != iovstack)
kfree(iov);
return retval;