1
linux/fs/xfs/linux-2.6
Christoph Hellwig f9581b1443 xfs: implement ->dirty_inode to fix timestamp handling
This is picking up on Felix's repost of Dave's patch to implement a
.dirty_inode method.  We really need this notification because
the VFS keeps writing directly into the inode structure instead
of going through methods to update this state.  In addition to
the long-known atime issue we now also have a caller in VM code
that updates c/mtime that way for shared writeable mmaps.  And
I found another one that no one has noticed in practice in the FIFO
code.

So implement ->dirty_inode to set i_update_core whenever the
inode gets externally dirtied, and switch the c/mtime handling to
the same scheme we already use for atime (always picking up
the value from the Linux inode).

Note that this patch also removes the xfs_synchronize_atime call
in xfs_reclaim it was superflous as we already synchronize the time
when writing the inode via the log (xfs_inode_item_format) or the
normal buffers (xfs_iflush_int).

In addition also remove the I_CLEAR check before copying the Linux
timestamps - now that we always have the Linux inode available
we can always use the timestamps in it.

Also switch to just using file_update_time for regular reads/writes -
that will get us all optimization done to it for free and make
sure we notice early when it breaks.

Signed-off-by: Christoph Hellwig <hch@lst.de>
Reviewed-by: Felix Blyakher <felixb@sgi.com>
Reviewed-by: Alex Elder <aelder@sgi.com>
Signed-off-by: Alex Elder <aelder@sgi.com>
2009-10-08 12:00:03 -05:00
..
kmem.c Fix congestion_wait() sync/async vs read/write confusion 2009-07-10 20:31:53 +02:00
kmem.h xfs: prevent deadlock in xfs_qm_shake() 2009-06-01 22:59:45 -05:00
mrlock.h
sv.h remove dead code from sv_t implementation 2008-12-04 15:39:21 +11:00
time.h
xfs_acl.c switch xfs to generic acl caching helpers 2009-06-24 08:17:07 -04:00
xfs_aops.c xfs: implement ->dirty_inode to fix timestamp handling 2009-10-08 12:00:03 -05:00
xfs_aops.h xfs: prevent unwritten extent conversion from blocking I/O completion 2009-04-06 18:42:11 +02:00
xfs_buf.c Merge branch 'for-linus' of git://oss.sgi.com/xfs/xfs 2009-08-12 08:49:35 -07:00
xfs_buf.h xfs: only issues a cache flush on unmount if barriers are enabled 2009-03-06 17:35:12 -06:00
xfs_cred.h [XFS] Fix merge failures 2008-12-29 16:47:18 +11:00
xfs_dmapi_priv.h
xfs_export.c [XFS] pass XFS_IGET_BULKSTAT to xfs_iget for handle operations 2009-01-09 15:17:17 +11:00
xfs_export.h
xfs_file.c xfs: merge fsync and O_SYNC handling 2009-09-01 12:45:57 -05:00
xfs_fs_subr.c xfs: use xfs_sync_inodes() for device flushing 2009-04-06 18:44:54 +02:00
xfs_fs_subr.h
xfs_globals.c [XFS] remove restricted chown parameter from xfs linux 2008-10-30 18:30:48 +11:00
xfs_globals.h CRED: Separate task security context from task_struct 2008-11-14 10:39:16 +11:00
xfs_ioctl32.c xfs: actually enable the swapext compat handler 2009-09-01 16:55:53 -05:00
xfs_ioctl32.h [XFS] fix compile on 32 bit systems 2008-12-04 13:07:29 +11:00
xfs_ioctl.c Merge branch 'master' of git://git.kernel.org/pub/scm/fs/xfs/xfs 2009-06-11 16:56:49 -05:00
xfs_ioctl.h xfs: fix dentry aliasing issues in open_by_handle 2009-01-19 14:43:18 +11:00
xfs_iops.c xfs: implement ->dirty_inode to fix timestamp handling 2009-10-08 12:00:03 -05:00
xfs_iops.h [XFS] add a FMODE flag to make XFS invisible I/O less hacky 2008-12-11 13:14:41 +11:00
xfs_linux.h block: rename CONFIG_LBD to CONFIG_LBDAF 2009-06-19 08:08:50 +02:00
xfs_lrw.c xfs: implement ->dirty_inode to fix timestamp handling 2009-10-08 12:00:03 -05:00
xfs_lrw.h
xfs_quotaops.c xfs: split xfs_sync_inodes 2009-06-08 15:35:48 +02:00
xfs_stats.c xfs: switch to seq_file 2009-09-15 12:29:24 -05:00
xfs_stats.h
xfs_super.c xfs: implement ->dirty_inode to fix timestamp handling 2009-10-08 12:00:03 -05:00
xfs_super.h xfs: get rid of indirections in the quotaops implementation 2009-02-09 08:47:34 +01:00
xfs_sync.c xfs: add more statics & drop some unused functions 2009-08-31 14:46:20 -05:00
xfs_sync.h xfs: add more statics & drop some unused functions 2009-08-31 14:46:20 -05:00
xfs_sysctl.c [XFS] remove restricted chown parameter from xfs linux 2008-10-30 18:30:48 +11:00
xfs_sysctl.h [XFS] remove restricted chown parameter from xfs linux 2008-10-30 18:30:48 +11:00
xfs_version.h
xfs_vnode.h xfs: kill VN_BAD 2009-03-16 08:25:25 +01:00
xfs_xattr.c xfs: use generic Posix ACL code 2009-06-10 17:07:47 +02:00