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
index bb3bb658e39cc7cc1021667030a87327dbeb2e57,cb06cc4d0003166031931e98ea2b5728cd6fd244..89b07e43ca28811349db39aa1ab2534de220fd87
@@@ -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
index d2c8e4a6ee2afdc4a4ea9c625a24fa0c718aee23,76f9a02bc36be06a36003a16d3268f5710e5225c..ae368165244d49458bd4db2cc4688d196f2e2098
@@@ -211,6 -203,20 +211,19 @@@ xfs_calc_rename_reservation
                                      XFS_FSB_TO_B(mp, 1))));
  }
  
 -              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
@@@ -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