mirror of
https://github.com/torvalds/linux.git
synced 2025-12-07 20:06:24 +00:00
btrfs: send: add and use helper to rename current inode when processing refs
Extract the logic to rename the current inode at process_recorded_refs() into a helper function and use it, therefore removing duplicated logic and making it easier for an upcoming patch by avoiding yet more duplicated logic. Signed-off-by: Filipe Manana <fdmanana@suse.com> Reviewed-by: David Sterba <dsterba@suse.com> Signed-off-by: David Sterba <dsterba@suse.com>
This commit is contained in:
committed by
David Sterba
parent
9453fe3297
commit
ec666c84de
@@ -4133,6 +4133,19 @@ out:
|
||||
return ret;
|
||||
}
|
||||
|
||||
static int rename_current_inode(struct send_ctx *sctx,
|
||||
struct fs_path *current_path,
|
||||
struct fs_path *new_path)
|
||||
{
|
||||
int ret;
|
||||
|
||||
ret = send_rename(sctx, current_path, new_path);
|
||||
if (ret < 0)
|
||||
return ret;
|
||||
|
||||
return fs_path_copy(current_path, new_path);
|
||||
}
|
||||
|
||||
/*
|
||||
* This does all the move/link/unlink/rmdir magic.
|
||||
*/
|
||||
@@ -4418,13 +4431,10 @@ static int process_recorded_refs(struct send_ctx *sctx, int *pending_move)
|
||||
* it depending on the inode mode.
|
||||
*/
|
||||
if (is_orphan && can_rename) {
|
||||
ret = send_rename(sctx, valid_path, cur->full_path);
|
||||
ret = rename_current_inode(sctx, valid_path, cur->full_path);
|
||||
if (ret < 0)
|
||||
goto out;
|
||||
is_orphan = false;
|
||||
ret = fs_path_copy(valid_path, cur->full_path);
|
||||
if (ret < 0)
|
||||
goto out;
|
||||
} else if (can_rename) {
|
||||
if (S_ISDIR(sctx->cur_inode_mode)) {
|
||||
/*
|
||||
@@ -4432,10 +4442,7 @@ static int process_recorded_refs(struct send_ctx *sctx, int *pending_move)
|
||||
* dirs, we always have one new and one deleted
|
||||
* ref. The deleted ref is ignored later.
|
||||
*/
|
||||
ret = send_rename(sctx, valid_path,
|
||||
cur->full_path);
|
||||
if (!ret)
|
||||
ret = fs_path_copy(valid_path,
|
||||
ret = rename_current_inode(sctx, valid_path,
|
||||
cur->full_path);
|
||||
if (ret < 0)
|
||||
goto out;
|
||||
|
||||
Reference in New Issue
Block a user