Merge branch 'xfs-O_TMPFILE-support' into for-next
authorDave Chinner <david@fromorbit.com>
Thu, 13 Mar 2014 08:14:43 +0000 (19:14 +1100)
committerDave Chinner <david@fromorbit.com>
Thu, 13 Mar 2014 08:14:43 +0000 (19:14 +1100)
Conflicts:
fs/xfs/xfs_trans_resv.c
- fix for XFS_INODE_CLUSTER_SIZE macro removal

1  2 
fs/xfs/xfs_inode.c
fs/xfs/xfs_inode.h
fs/xfs/xfs_iops.c
fs/xfs/xfs_symlink.c
fs/xfs/xfs_trans_resv.c
fs/xfs/xfs_trans_resv.h

Simple merge
Simple merge
@@@ -1046,9 -1044,21 +1047,22 @@@ xfs_vn_fiemap
        return 0;
  }
  
+ STATIC int
+ xfs_vn_tmpfile(
+       struct inode    *dir,
+       struct dentry   *dentry,
+       umode_t         mode)
+ {
+       int             error;
+       error = xfs_create_tmpfile(XFS_I(dir), dentry, mode);
+       return -error;
+ }
  static const struct inode_operations xfs_inode_operations = {
        .get_acl                = xfs_get_acl,
 +      .set_acl                = xfs_set_acl,
        .getattr                = xfs_vn_getattr,
        .setattr                = xfs_vn_setattr,
        .setxattr               = generic_setxattr,
Simple merge
@@@ -212,6 -204,20 +212,19 @@@ xfs_calc_rename_reservation
  }
  
  /*
 -              MAX((__uint16_t)XFS_FSB_TO_B(mp, 1),
 -                      (__uint16_t)XFS_INODE_CLUSTER_SIZE(mp));
+  * For removing an inode from unlinked list at first, we can modify:
+  *    the agi hash list and counters: sector size
+  *    the on disk inode before ours in the agi hash list: inode cluster size
+  */
+ STATIC uint
+ xfs_calc_iunlink_remove_reservation(
+       struct xfs_mount        *mp)
+ {
+       return xfs_calc_buf_res(1, mp->m_sb.sb_sectsize) +
++             max_t(uint, XFS_FSB_TO_B(mp, 1), mp->m_inode_cluster_size);
+ }
+ /*
   * For creating a link to an inode:
   *    the parent directory inode: inode size
   *    the linked inode: inode size
@@@ -391,11 -425,11 +432,11 @@@ xfs_calc_ifree_reservation
  {
        return XFS_DQUOT_LOGRES(mp) +
                xfs_calc_inode_res(mp, 1) +
-               xfs_calc_buf_res(2, mp->m_sb.sb_sectsize) +
+               xfs_calc_buf_res(1, mp->m_sb.sb_sectsize) +
                xfs_calc_buf_res(1, XFS_FSB_TO_B(mp, 1)) +
-               max_t(uint, XFS_FSB_TO_B(mp, 1), mp->m_inode_cluster_size) +
+               xfs_calc_iunlink_remove_reservation(mp) +
                xfs_calc_buf_res(1, 0) +
 -              xfs_calc_buf_res(2 + XFS_IALLOC_BLOCKS(mp) +
 +              xfs_calc_buf_res(2 + mp->m_ialloc_blks +
                                 mp->m_in_maxlevels, 0) +
                xfs_calc_buf_res(XFS_ALLOCFREE_LOG_COUNT(mp, 1),
                                 XFS_FSB_TO_B(mp, 1));
Simple merge