Commit fcbd2154 authored by Filipe Manana's avatar Filipe Manana Committed by Josef Bacik
Browse files

Btrfs: avoid unnecessary utimes update in incremental send



When we're finishing processing of an inode, if we're dealing with a
directory inode that has a pending move/rename operation, we don't
need to send a utimes update instruction to the send stream, as we'll
do it later after doing the move/rename operation. Therefore we save
some time here building paths and doing btree lookups.

Signed-off-by: default avatarFilipe David Borba Manana <fdmanana@gmail.com>
Signed-off-by: default avatarJosef Bacik <jbacik@fb.com>
parent e2127cf0
Loading
Loading
Loading
Loading
+11 −10
Original line number Diff line number Diff line
@@ -4957,17 +4957,18 @@ static int finish_inode_if_needed(struct send_ctx *sctx, int at_end)
		ret = apply_children_dir_moves(sctx);
		if (ret)
			goto out;
	}

		/*
		 * Need to send that every time, no matter if it actually
		 * changed between the two trees as we have done changes to
	 * the inode before.
		 * the inode before. If our inode is a directory and it's
		 * waiting to be moved/renamed, we will send its utimes when
		 * it's moved/renamed, therefore we don't need to do it here.
		 */
		sctx->send_progress = sctx->cur_ino + 1;
		ret = send_utimes(sctx, sctx->cur_ino, sctx->cur_inode_gen);
		if (ret < 0)
			goto out;
	}

out:
	return ret;