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

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
...@@ -4957,17 +4957,18 @@ static int finish_inode_if_needed(struct send_ctx *sctx, int at_end) ...@@ -4957,17 +4957,18 @@ static int finish_inode_if_needed(struct send_ctx *sctx, int at_end)
ret = apply_children_dir_moves(sctx); ret = apply_children_dir_moves(sctx);
if (ret) if (ret)
goto out; goto out;
}
/* /*
* Need to send that every time, no matter if it actually * Need to send that every time, no matter if it actually
* changed between the two trees as we have done changes to * 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; sctx->send_progress = sctx->cur_ino + 1;
ret = send_utimes(sctx, sctx->cur_ino, sctx->cur_inode_gen); ret = send_utimes(sctx, sctx->cur_ino, sctx->cur_inode_gen);
if (ret < 0) if (ret < 0)
goto out; goto out;
}
out: out:
return ret; return ret;
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment