瀏覽代碼

[XFS] Fix some build fallout from atime changes.

SGI-PV: 946679
SGI-Modid: xfs-linux-melb:xfs-kern:24899a

Signed-off-by: Nathan Scott <nathans@sgi.com>
Nathan Scott 19 年之前
父節點
當前提交
ca5ccbf98d
共有 3 個文件被更改,包括 21 次插入5 次删除
  1. 19 0
      fs/xfs/linux-2.6/xfs_vnode.h
  2. 1 3
      fs/xfs/xfs_itable.c
  3. 1 2
      fs/xfs/xfs_vnodeops.c

+ 19 - 0
fs/xfs/linux-2.6/xfs_vnode.h

@@ -565,6 +565,25 @@ static inline int VN_BAD(struct vnode *vp)
 	return is_bad_inode(LINVFS_GET_IP(vp));
 }
 
+/*
+ * Extracting atime values in various formats
+ */
+static inline void vn_atime_to_bstime(struct vnode *vp, xfs_bstime_t *bs_atime)
+{
+	bs_atime->tv_sec = vp->v_inode.i_atime.tv_sec;
+	bs_atime->tv_nsec = vp->v_inode.i_atime.tv_nsec;
+}
+
+static inline void vn_atime_to_timespec(struct vnode *vp, struct timespec *ts)
+{
+	*ts = vp->v_inode.i_atime;
+}
+
+static inline void vn_atime_to_time_t(struct vnode *vp, time_t *tt)
+{
+	*tt = vp->v_inode.i_atime.tv_sec;
+}
+
 /*
  * Some useful predicates.
  */

+ 1 - 3
fs/xfs/xfs_itable.c

@@ -86,9 +86,7 @@ xfs_bulkstat_one_iget(
 	buf->bs_uid = dic->di_uid;
 	buf->bs_gid = dic->di_gid;
 	buf->bs_size = dic->di_size;
-	/* atime is only kept uptodate in the Linux inode */
-	buf->bs_atime.tv_sec = vp->v_inode.i_atime.tv_sec;
-	buf->bs_atime.tv_nsec = vp->v_inode.i_atime.tv_nsec;
+	vn_atime_to_bstime(vp, &buf->bs_atime);
 	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;

+ 1 - 2
fs/xfs/xfs_vnodeops.c

@@ -182,8 +182,7 @@ xfs_getattr(
 		break;
 	}
 
-	/* atime is only kept uptodate in the Linux inode */
-	vap->va_atime = vp->v_inode.i_atime;
+	vn_atime_to_timespec(vp, &vap->va_atime);
 	vap->va_mtime.tv_sec = ip->i_d.di_mtime.t_sec;
 	vap->va_mtime.tv_nsec = ip->i_d.di_mtime.t_nsec;
 	vap->va_ctime.tv_sec = ip->i_d.di_ctime.t_sec;