From d7594d830c0bf2a0c12d8694e4bd3322fd1f85a4 Mon Sep 17 00:00:00 2001 From: "alex.lyn" Date: Wed, 15 Nov 2023 10:18:08 +0800 Subject: [PATCH] runtime-rs: correct the path from cid to device_id. When a direct volume is used by multiple containers in Kata, Generating many shared paths with cids will cause IO error as the result of one direct volume mounts more than once. To correct it, use the device_id instead of cid which ensures that the guest only mounts the FS once. Fixes: #8328 Signed-off-by: alex.lyn --- src/runtime-rs/crates/resource/src/volume/utils.rs | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/src/runtime-rs/crates/resource/src/volume/utils.rs b/src/runtime-rs/crates/resource/src/volume/utils.rs index 2121b02c2c..d5f17d44b4 100644 --- a/src/runtime-rs/crates/resource/src/volume/utils.rs +++ b/src/runtime-rs/crates/resource/src/volume/utils.rs @@ -57,13 +57,13 @@ pub fn get_file_name>(src: P) -> Result { pub(crate) async fn generate_shared_path( dest: String, read_only: bool, - cid: &str, + device_id: &str, sid: &str, ) -> Result { let file_name = get_file_name(&dest).context("failed to get file name.")?; - let mount_name = generate_mount_path(cid, file_name.as_str()); - let guest_path = do_get_guest_path(&mount_name, cid, true, false); - let host_path = do_get_host_path(&mount_name, sid, cid, true, read_only); + let mount_name = generate_mount_path(device_id, file_name.as_str()); + let guest_path = do_get_guest_path(&mount_name, device_id, true, false); + let host_path = do_get_host_path(&mount_name, sid, device_id, true, read_only); if dest.starts_with("/dev") { fs::File::create(&host_path).context(format!("failed to create file {:?}", &host_path))?;