2000-11-20 08:13:09

by Christopher Yeoh

[permalink] [raw]
Subject: [PATCH] 0 byte writes should not seek even with O_APPEND

Hi Linus,

Currently when a zero byte write is done on a regular file
opened with O_APPEND the file offset is set to the end of the
file. For POSIX compliant behaviour this shouldn't happen.

The attached patch fixes this.

Chris.

--- mm/filemap.c.orig Mon Nov 20 14:05:38 2000
+++ mm/filemap.c Mon Nov 20 18:11:43 2000
@@ -2458,12 +2458,15 @@
}
}

- status = 0;
- if (count) {
- remove_suid(inode);
- inode->i_ctime = inode->i_mtime = CURRENT_TIME;
- mark_inode_dirty(inode);
+ if (count == 0) {
+ err = 0;
+ goto out;
}
+
+ status = 0;
+ remove_suid(inode);
+ inode->i_ctime = inode->i_mtime = CURRENT_TIME;
+ mark_inode_dirty(inode);

while (count) {
unsigned long bytes, index, offset;