Merge branch 'master' into for-linus
authorAlex Elder <aelder@sgi.com>
Thu, 8 Oct 2009 18:53:44 +0000 (13:53 -0500)
committerAlex Elder <aelder@sgi.com>
Thu, 8 Oct 2009 18:53:44 +0000 (13:53 -0500)
1  2 
fs/xfs/linux-2.6/xfs_iops.c

index da0159d99f82795cd28277138a1f3d5e06916b03,cdf7114d41fc32615007253f05cc14743b2e2b63..cd42ef78f6b54e705ad604e3ccfc4eb1a3df3743
  #include <linux/fiemap.h>
  
  /*
-  * Bring the atime in the XFS inode uptodate.
-  * Used before logging the inode to disk or when the Linux inode goes away.
+  * Bring the timestamps in the XFS inode uptodate.
+  *
+  * Used before writing the inode to disk.
   */
  void
- xfs_synchronize_atime(
+ xfs_synchronize_times(
        xfs_inode_t     *ip)
  {
        struct inode    *inode = VFS_I(ip);
  
-       if (!(inode->i_state & I_CLEAR)) {
-               ip->i_d.di_atime.t_sec = (__int32_t)inode->i_atime.tv_sec;
-               ip->i_d.di_atime.t_nsec = (__int32_t)inode->i_atime.tv_nsec;
-       }
+       ip->i_d.di_atime.t_sec = (__int32_t)inode->i_atime.tv_sec;
+       ip->i_d.di_atime.t_nsec = (__int32_t)inode->i_atime.tv_nsec;
+       ip->i_d.di_ctime.t_sec = (__int32_t)inode->i_ctime.tv_sec;
+       ip->i_d.di_ctime.t_nsec = (__int32_t)inode->i_ctime.tv_nsec;
+       ip->i_d.di_mtime.t_sec = (__int32_t)inode->i_mtime.tv_sec;
+       ip->i_d.di_mtime.t_nsec = (__int32_t)inode->i_mtime.tv_nsec;
  }
  
  /*
@@@ -106,32 -109,20 +109,20 @@@ xfs_ichgtime
        if ((flags & XFS_ICHGTIME_MOD) &&
            !timespec_equal(&inode->i_mtime, &tv)) {
                inode->i_mtime = tv;
-               ip->i_d.di_mtime.t_sec = (__int32_t)tv.tv_sec;
-               ip->i_d.di_mtime.t_nsec = (__int32_t)tv.tv_nsec;
                sync_it = 1;
        }
        if ((flags & XFS_ICHGTIME_CHG) &&
            !timespec_equal(&inode->i_ctime, &tv)) {
                inode->i_ctime = tv;
-               ip->i_d.di_ctime.t_sec = (__int32_t)tv.tv_sec;
-               ip->i_d.di_ctime.t_nsec = (__int32_t)tv.tv_nsec;
                sync_it = 1;
        }
  
        /*
-        * We update the i_update_core field _after_ changing
-        * the timestamps in order to coordinate properly with
-        * xfs_iflush() so that we don't lose timestamp updates.
-        * This keeps us from having to hold the inode lock
-        * while doing this.  We use the SYNCHRONIZE macro to
-        * ensure that the compiler does not reorder the update
-        * of i_update_core above the timestamp updates above.
+        * Update complete - now make sure everyone knows that the inode
+        * is dirty.
         */
-       if (sync_it) {
-               SYNCHRONIZE();
-               ip->i_update_core = 1;
+       if (sync_it)
                xfs_mark_inode_dirty_sync(ip);
-       }
  }
  
  /*
@@@ -483,6 -474,14 +474,6 @@@ xfs_vn_put_link
                kfree(s);
  }
  
 -STATIC int
 -xfs_vn_permission(
 -      struct inode            *inode,
 -      int                     mask)
 -{
 -      return generic_permission(inode, mask, xfs_check_acl);
 -}
 -
  STATIC int
  xfs_vn_getattr(
        struct vfsmount         *mnt,
        stat->gid = ip->i_d.di_gid;
        stat->ino = ip->i_ino;
        stat->atime = inode->i_atime;
-       stat->mtime.tv_sec = ip->i_d.di_mtime.t_sec;
-       stat->mtime.tv_nsec = ip->i_d.di_mtime.t_nsec;
-       stat->ctime.tv_sec = ip->i_d.di_ctime.t_sec;
-       stat->ctime.tv_nsec = ip->i_d.di_ctime.t_nsec;
+       stat->mtime = inode->i_mtime;
+       stat->ctime = inode->i_ctime;
        stat->blocks =
                XFS_FSB_TO_BB(mp, ip->i_d.di_nblocks + ip->i_delayed_blks);
  
@@@ -687,7 -684,7 +676,7 @@@ xfs_vn_fiemap
  }
  
  static const struct inode_operations xfs_inode_operations = {
 -      .permission             = xfs_vn_permission,
 +      .check_acl              = xfs_check_acl,
        .truncate               = xfs_vn_truncate,
        .getattr                = xfs_vn_getattr,
        .setattr                = xfs_vn_setattr,
@@@ -715,7 -712,7 +704,7 @@@ static const struct inode_operations xf
        .rmdir                  = xfs_vn_unlink,
        .mknod                  = xfs_vn_mknod,
        .rename                 = xfs_vn_rename,
 -      .permission             = xfs_vn_permission,
 +      .check_acl              = xfs_check_acl,
        .getattr                = xfs_vn_getattr,
        .setattr                = xfs_vn_setattr,
        .setxattr               = generic_setxattr,
@@@ -740,7 -737,7 +729,7 @@@ static const struct inode_operations xf
        .rmdir                  = xfs_vn_unlink,
        .mknod                  = xfs_vn_mknod,
        .rename                 = xfs_vn_rename,
 -      .permission             = xfs_vn_permission,
 +      .check_acl              = xfs_check_acl,
        .getattr                = xfs_vn_getattr,
        .setattr                = xfs_vn_setattr,
        .setxattr               = generic_setxattr,
@@@ -753,7 -750,7 +742,7 @@@ static const struct inode_operations xf
        .readlink               = generic_readlink,
        .follow_link            = xfs_vn_follow_link,
        .put_link               = xfs_vn_put_link,
 -      .permission             = xfs_vn_permission,
 +      .check_acl              = xfs_check_acl,
        .getattr                = xfs_vn_getattr,
        .setattr                = xfs_vn_setattr,
        .setxattr               = generic_setxattr,