diff -urNp --exclude CVS --exclude BitKeeper x-ref/mm/filemap.c x/mm/filemap.c --- x-ref/mm/filemap.c 2003-07-17 01:23:37.000000000 +0200 +++ x/mm/filemap.c 2003-07-17 01:25:28.000000000 +0200 @@ -3222,6 +3222,15 @@ sync_failure: goto done; } +static void update_inode_times(struct inode *inode) +{ + time_t now = CURRENT_TIME; + if (inode->i_ctime != now || inode->i_mtime != now) { + inode->i_ctime = inode->i_mtime = now; + mark_inode_dirty_sync(inode); + } +} + ssize_t do_generic_direct_write(struct file *file,const char *buf,size_t count, loff_t *ppos) { @@ -3243,8 +3252,7 @@ do_generic_direct_write(struct file *fil BUG(); remove_suid(inode); - inode->i_ctime = inode->i_mtime = CURRENT_TIME; - mark_inode_dirty_sync(inode); + update_inode_times(inode); written = generic_file_direct_IO(WRITE, file, (char *) buf, count, pos); if (written > 0) {