diff options
Diffstat (limited to 'fs/xfs/xfs_itable.c')
| -rw-r--r-- | fs/xfs/xfs_itable.c | 21 |
1 files changed, 13 insertions, 8 deletions
diff --git a/fs/xfs/xfs_itable.c b/fs/xfs/xfs_itable.c index b68f9107e26c..62efab2f3839 100644 --- a/fs/xfs/xfs_itable.c +++ b/fs/xfs/xfs_itable.c | |||
| @@ -59,6 +59,7 @@ xfs_bulkstat_one_iget( | |||
| 59 | { | 59 | { |
| 60 | xfs_icdinode_t *dic; /* dinode core info pointer */ | 60 | xfs_icdinode_t *dic; /* dinode core info pointer */ |
| 61 | xfs_inode_t *ip; /* incore inode pointer */ | 61 | xfs_inode_t *ip; /* incore inode pointer */ |
| 62 | struct inode *inode; | ||
| 62 | int error; | 63 | int error; |
| 63 | 64 | ||
| 64 | error = xfs_iget(mp, NULL, ino, | 65 | error = xfs_iget(mp, NULL, ino, |
| @@ -72,6 +73,7 @@ xfs_bulkstat_one_iget( | |||
| 72 | ASSERT(ip->i_imap.im_blkno != 0); | 73 | ASSERT(ip->i_imap.im_blkno != 0); |
| 73 | 74 | ||
| 74 | dic = &ip->i_d; | 75 | dic = &ip->i_d; |
| 76 | inode = VFS_I(ip); | ||
| 75 | 77 | ||
| 76 | /* xfs_iget returns the following without needing | 78 | /* xfs_iget returns the following without needing |
| 77 | * further change. | 79 | * further change. |
| @@ -83,16 +85,19 @@ xfs_bulkstat_one_iget( | |||
| 83 | buf->bs_uid = dic->di_uid; | 85 | buf->bs_uid = dic->di_uid; |
| 84 | buf->bs_gid = dic->di_gid; | 86 | buf->bs_gid = dic->di_gid; |
| 85 | buf->bs_size = dic->di_size; | 87 | buf->bs_size = dic->di_size; |
| 88 | |||
| 86 | /* | 89 | /* |
| 87 | * We are reading the atime from the Linux inode because the | 90 | * We need to read the timestamps from the Linux inode because |
| 88 | * dinode might not be uptodate. | 91 | * the VFS keeps writing directly into the inode structure instead |
| 92 | * of telling us about the updates. | ||
| 89 | */ | 93 | */ |
| 90 | buf->bs_atime.tv_sec = VFS_I(ip)->i_atime.tv_sec; | 94 | buf->bs_atime.tv_sec = inode->i_atime.tv_sec; |
| 91 | buf->bs_atime.tv_nsec = VFS_I(ip)->i_atime.tv_nsec; | 95 | buf->bs_atime.tv_nsec = inode->i_atime.tv_nsec; |
| 92 | buf->bs_mtime.tv_sec = dic->di_mtime.t_sec; | 96 | buf->bs_mtime.tv_sec = inode->i_mtime.tv_sec; |
| 93 | buf->bs_mtime.tv_nsec = dic->di_mtime.t_nsec; | 97 | buf->bs_mtime.tv_nsec = inode->i_mtime.tv_nsec; |
| 94 | buf->bs_ctime.tv_sec = dic->di_ctime.t_sec; | 98 | buf->bs_ctime.tv_sec = inode->i_ctime.tv_sec; |
| 95 | buf->bs_ctime.tv_nsec = dic->di_ctime.t_nsec; | 99 | buf->bs_ctime.tv_nsec = inode->i_ctime.tv_nsec; |
| 100 | |||
| 96 | buf->bs_xflags = xfs_ip2xflags(ip); | 101 | buf->bs_xflags = xfs_ip2xflags(ip); |
| 97 | buf->bs_extsize = dic->di_extsize << mp->m_sb.sb_blocklog; | 102 | buf->bs_extsize = dic->di_extsize << mp->m_sb.sb_blocklog; |
| 98 | buf->bs_extents = dic->di_nextents; | 103 | buf->bs_extents = dic->di_nextents; |
