xfs: log timestamp updates
Timestamps on regular files are the last metadata that XFS does not update transactionally. Now that we use the delaylog mode exclusively and made the log scode scale extremly well there is no need to bypass that code for timestamp updates. Logging all updates allows to drop a lot of code, and will allow for further performance improvements later on. Note that this patch drops optimized handling of fdatasync - it will be added back in a separate commit. Reviewed-by: Dave Chinner <dchinner@redhat.com> Signed-off-by: Christoph Hellwig <hch@lst.de> Reviewed-by: Mark Tinguely <tinguely@sgi.com> Signed-off-by: Ben Myers <bpm@sgi.com>
This commit is contained in:

committed by
Ben Myers

parent
281627df3e
commit
8a9c9980f2
@@ -62,7 +62,6 @@ xfs_bulkstat_one_int(
|
||||
{
|
||||
struct xfs_icdinode *dic; /* dinode core info pointer */
|
||||
struct xfs_inode *ip; /* incore inode pointer */
|
||||
struct inode *inode;
|
||||
struct xfs_bstat *buf; /* return buffer */
|
||||
int error = 0; /* error value */
|
||||
|
||||
@@ -86,7 +85,6 @@ xfs_bulkstat_one_int(
|
||||
ASSERT(ip->i_imap.im_blkno != 0);
|
||||
|
||||
dic = &ip->i_d;
|
||||
inode = VFS_I(ip);
|
||||
|
||||
/* xfs_iget returns the following without needing
|
||||
* further change.
|
||||
@@ -99,19 +97,12 @@ xfs_bulkstat_one_int(
|
||||
buf->bs_uid = dic->di_uid;
|
||||
buf->bs_gid = dic->di_gid;
|
||||
buf->bs_size = dic->di_size;
|
||||
|
||||
/*
|
||||
* We need to read the timestamps from the Linux inode because
|
||||
* the VFS keeps writing directly into the inode structure instead
|
||||
* of telling us about the updates.
|
||||
*/
|
||||
buf->bs_atime.tv_sec = inode->i_atime.tv_sec;
|
||||
buf->bs_atime.tv_nsec = inode->i_atime.tv_nsec;
|
||||
buf->bs_mtime.tv_sec = inode->i_mtime.tv_sec;
|
||||
buf->bs_mtime.tv_nsec = inode->i_mtime.tv_nsec;
|
||||
buf->bs_ctime.tv_sec = inode->i_ctime.tv_sec;
|
||||
buf->bs_ctime.tv_nsec = inode->i_ctime.tv_nsec;
|
||||
|
||||
buf->bs_atime.tv_sec = dic->di_atime.t_sec;
|
||||
buf->bs_atime.tv_nsec = dic->di_atime.t_nsec;
|
||||
buf->bs_mtime.tv_sec = dic->di_mtime.t_sec;
|
||||
buf->bs_mtime.tv_nsec = dic->di_mtime.t_nsec;
|
||||
buf->bs_ctime.tv_sec = dic->di_ctime.t_sec;
|
||||
buf->bs_ctime.tv_nsec = dic->di_ctime.t_nsec;
|
||||
buf->bs_xflags = xfs_ip2xflags(ip);
|
||||
buf->bs_extsize = dic->di_extsize << mp->m_sb.sb_blocklog;
|
||||
buf->bs_extents = dic->di_nextents;
|
||||
|
Reference in New Issue
Block a user