Btrfs: avoid unnecessary utimes update in incremental send
PATCH 1/1 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 Filipe David Borba Manana <[email protected]>
--- fs/btrfs/send.c | 21 +++++++++++---------- 1 file changed, 11 insertions(+), 10 deletions(-)
fs/btrfs/send.c +11 -10
@@ -4956,18 +4956,19 @@ 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. 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; } -/* -* 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. -*/ - 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; }
Signature · 1 line
1.7.9.5