Merge git://git.kernel.org/pub/scm/linux/kernel/git/cmetcalf/linux-tile
[firefly-linux-kernel-4.4.55.git] / fs / xfs / xfs_rename.c
index fc1cda23b8171552ff6fd99d34adebf6be782bb3..8fca957200dfcba000f1f0eb4da51eb1d4f8516e 100644 (file)
 #include "xfs_sb.h"
 #include "xfs_ag.h"
 #include "xfs_dir2.h"
-#include "xfs_dmapi.h"
 #include "xfs_mount.h"
 #include "xfs_da_btree.h"
 #include "xfs_bmap_btree.h"
-#include "xfs_dir2_sf.h"
-#include "xfs_attr_sf.h"
 #include "xfs_dinode.h"
 #include "xfs_inode.h"
 #include "xfs_inode_item.h"
@@ -116,20 +113,7 @@ xfs_rename(
        int             spaceres;
        int             num_inodes;
 
-       xfs_itrace_entry(src_dp);
-       xfs_itrace_entry(target_dp);
-
-       if (DM_EVENT_ENABLED(src_dp, DM_EVENT_RENAME) ||
-           DM_EVENT_ENABLED(target_dp, DM_EVENT_RENAME)) {
-               error = XFS_SEND_NAMESP(mp, DM_EVENT_RENAME,
-                                       src_dp, DM_RIGHT_NULL,
-                                       target_dp, DM_RIGHT_NULL,
-                                       src_name->name, target_name->name,
-                                       0, 0, 0);
-               if (error)
-                       return error;
-       }
-       /* Return through std_return after this point. */
+       trace_xfs_rename(src_dp, target_dp, src_name, target_name);
 
        new_parent = (src_dp != target_dp);
        src_is_directory = ((src_ip->i_d.di_mode & S_IFMT) == S_IFDIR);
@@ -184,26 +168,14 @@ xfs_rename(
        /*
         * Join all the inodes to the transaction. From this point on,
         * we can rely on either trans_commit or trans_cancel to unlock
-        * them.  Note that we need to add a vnode reference to the
-        * directories since trans_commit & trans_cancel will decrement
-        * them when they unlock the inodes.  Also, we need to be careful
-        * not to add an inode to the transaction more than once.
+        * them.
         */
-       IHOLD(src_dp);
-       xfs_trans_ijoin(tp, src_dp, XFS_ILOCK_EXCL);
-
-       if (new_parent) {
-               IHOLD(target_dp);
-               xfs_trans_ijoin(tp, target_dp, XFS_ILOCK_EXCL);
-       }
-
-       IHOLD(src_ip);
-       xfs_trans_ijoin(tp, src_ip, XFS_ILOCK_EXCL);
-
-       if (target_ip) {
-               IHOLD(target_ip);
-               xfs_trans_ijoin(tp, target_ip, XFS_ILOCK_EXCL);
-       }
+       xfs_trans_ijoin_ref(tp, src_dp, XFS_ILOCK_EXCL);
+       if (new_parent)
+               xfs_trans_ijoin_ref(tp, target_dp, XFS_ILOCK_EXCL);
+       xfs_trans_ijoin_ref(tp, src_ip, XFS_ILOCK_EXCL);
+       if (target_ip)
+               xfs_trans_ijoin_ref(tp, target_ip, XFS_ILOCK_EXCL);
 
        /*
         * If we are using project inheritance, we only allow renames
@@ -369,26 +341,13 @@ xfs_rename(
         * trans_commit will unlock src_ip, target_ip & decrement
         * the vnode references.
         */
-       error = xfs_trans_commit(tp, XFS_TRANS_RELEASE_LOG_RES);
-
-       /* Fall through to std_return with error = 0 or errno from
-        * xfs_trans_commit      */
-std_return:
-       if (DM_EVENT_ENABLED(src_dp, DM_EVENT_POSTRENAME) ||
-           DM_EVENT_ENABLED(target_dp, DM_EVENT_POSTRENAME)) {
-               (void) XFS_SEND_NAMESP (mp, DM_EVENT_POSTRENAME,
-                                       src_dp, DM_RIGHT_NULL,
-                                       target_dp, DM_RIGHT_NULL,
-                                       src_name->name, target_name->name,
-                                       0, error, 0);
-       }
-       return error;
+       return xfs_trans_commit(tp, XFS_TRANS_RELEASE_LOG_RES);
 
  abort_return:
        cancel_flags |= XFS_TRANS_ABORT;
-       /* FALLTHROUGH */
  error_return:
        xfs_bmap_cancel(&free_list);
        xfs_trans_cancel(tp, cancel_flags);
-       goto std_return;
+ std_return:
+       return error;
 }