Btrfs: incremental send, remove dead code
authorFilipe Manana <fdmanana@suse.com>
Thu, 12 Mar 2015 16:04:50 +0000 (16:04 +0000)
committerChris Mason <clm@fb.com>
Fri, 27 Mar 2015 00:55:52 +0000 (17:55 -0700)
The logic to detect path loops when attempting to apply a pending
directory rename, introduced in commit
f959492fc15b (Btrfs: send, fix more issues related to directory renames)
is no longer needed, and the respective fstests test case for that commit,
btrfs/045, now passes without this code (as well as all the other test
cases for send/receive).

Signed-off-by: Filipe Manana <fdmanana@suse.com>
Signed-off-by: Chris Mason <clm@fb.com>
fs/btrfs/send.c

index 00cb924884f559dad05a06ab1cf3d11c6a017068..a1216f9b49171510194109c7594c61b4277298ea 100644 (file)
@@ -3067,48 +3067,6 @@ static struct pending_dir_move *get_pending_dir_moves(struct send_ctx *sctx,
        return NULL;
 }
 
-static int path_loop(struct send_ctx *sctx, struct fs_path *name,
-                    u64 ino, u64 gen, u64 *ancestor_ino)
-{
-       int ret = 0;
-       u64 parent_inode = 0;
-       u64 parent_gen = 0;
-       u64 start_ino = ino;
-
-       *ancestor_ino = 0;
-       while (ino != BTRFS_FIRST_FREE_OBJECTID) {
-               fs_path_reset(name);
-
-               if (is_waiting_for_rm(sctx, ino))
-                       break;
-               if (is_waiting_for_move(sctx, ino)) {
-                       if (*ancestor_ino == 0)
-                               *ancestor_ino = ino;
-                       ret = get_first_ref(sctx->parent_root, ino,
-                                           &parent_inode, &parent_gen, name);
-               } else {
-                       ret = __get_cur_name_and_parent(sctx, ino, gen,
-                                                       &parent_inode,
-                                                       &parent_gen, name);
-                       if (ret > 0) {
-                               ret = 0;
-                               break;
-                       }
-               }
-               if (ret < 0)
-                       break;
-               if (parent_inode == start_ino) {
-                       ret = 1;
-                       if (*ancestor_ino == 0)
-                               *ancestor_ino = ino;
-                       break;
-               }
-               ino = parent_inode;
-               gen = parent_gen;
-       }
-       return ret;
-}
-
 static int apply_dir_move(struct send_ctx *sctx, struct pending_dir_move *pm)
 {
        struct fs_path *from_path = NULL;
@@ -3120,7 +3078,6 @@ static int apply_dir_move(struct send_ctx *sctx, struct pending_dir_move *pm)
        struct waiting_dir_move *dm = NULL;
        u64 rmdir_ino = 0;
        int ret;
-       u64 ancestor = 0;
 
        name = fs_path_alloc();
        from_path = fs_path_alloc();
@@ -3152,22 +3109,6 @@ static int apply_dir_move(struct send_ctx *sctx, struct pending_dir_move *pm)
                goto out;
 
        sctx->send_progress = sctx->cur_ino + 1;
-       ret = path_loop(sctx, name, pm->ino, pm->gen, &ancestor);
-       if (ret) {
-               LIST_HEAD(deleted_refs);
-               ASSERT(ancestor > BTRFS_FIRST_FREE_OBJECTID);
-               ret = add_pending_dir_move(sctx, pm->ino, pm->gen, ancestor,
-                                          &pm->update_refs, &deleted_refs,
-                                          pm->is_orphan);
-               if (ret < 0)
-                       goto out;
-               if (rmdir_ino) {
-                       dm = get_waiting_dir_move(sctx, pm->ino);
-                       ASSERT(dm);
-                       dm->rmdir_ino = rmdir_ino;
-               }
-               goto out;
-       }
        fs_path_reset(name);
        to_path = name;
        name = NULL;