runtime-rs: Fix file_mode in copyfile to preserve permissions

The file_mode field in CopyFileRequest was set to only the type flag
(S_IFDIR or S_IFREG) without permission bits, causing files and
directories copied to the guest to lose their original permissions.
Use metadata.mode() instead which includes both type and permission
bits.

Signed-off-by: Alex Lyn <alex.lyn@antgroup.com>
This commit is contained in:
Alex Lyn
2026-06-18 11:31:47 +08:00
parent 66e938e02d
commit d89290472f

View File

@@ -846,7 +846,7 @@ async fn copy_dir_recursively<P: AsRef<Path>>(
uid: metadata.uid() as i32,
gid: metadata.gid() as i32,
dir_mode: metadata.mode(),
file_mode: SFlag::S_IFDIR.bits(),
file_mode: metadata.mode(),
data: vec![],
..Default::default()
};
@@ -879,7 +879,7 @@ async fn copy_dir_recursively<P: AsRef<Path>>(
file_size: metadata.len() as i64,
uid: metadata.uid() as i32,
gid: metadata.gid() as i32,
file_mode: SFlag::S_IFREG.bits(),
file_mode: metadata.mode(),
data: buffer,
..Default::default()
};