Commit e2d044fe authored by Alex Lyakas's avatar Alex Lyakas Committed by Chris Mason

Btrfs: Send: preserve ownership (uid and gid) also for symlinks.

This patch also requires a change in the user-space part of "receive".
We need to use "lchown" instead of "chown". We will do this in the
following patch.
Signed-off-by: default avatarAlex Lyakas <alex.btrfs@zadarastorage.com>

 	if (S_ISREG(sctx->cur_inode_mode)) {
parent 671415b7
...@@ -4067,22 +4067,21 @@ static int finish_inode_if_needed(struct send_ctx *sctx, int at_end) ...@@ -4067,22 +4067,21 @@ static int finish_inode_if_needed(struct send_ctx *sctx, int at_end)
if (ret < 0) if (ret < 0)
goto out; goto out;
if (!S_ISLNK(sctx->cur_inode_mode)) { if (!sctx->parent_root || sctx->cur_inode_new) {
if (!sctx->parent_root || sctx->cur_inode_new) { need_chown = 1;
if (!S_ISLNK(sctx->cur_inode_mode))
need_chmod = 1; need_chmod = 1;
need_chown = 1; } else {
} else { ret = get_inode_info(sctx->parent_root, sctx->cur_ino,
ret = get_inode_info(sctx->parent_root, sctx->cur_ino, NULL, NULL, &right_mode, &right_uid,
NULL, NULL, &right_mode, &right_uid, &right_gid, NULL);
&right_gid, NULL); if (ret < 0)
if (ret < 0) goto out;
goto out;
if (left_uid != right_uid || left_gid != right_gid) if (left_uid != right_uid || left_gid != right_gid)
need_chown = 1; need_chown = 1;
if (left_mode != right_mode) if (!S_ISLNK(sctx->cur_inode_mode) && left_mode != right_mode)
need_chmod = 1; need_chmod = 1;
}
} }
if (S_ISREG(sctx->cur_inode_mode)) { if (S_ISREG(sctx->cur_inode_mode)) {
......
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