From c31cf7269ee8f8bd87a22fa3bcfa1a0330f2317f Mon Sep 17 00:00:00 2001 From: Feng Wang Date: Wed, 5 Oct 2022 16:59:19 -0700 Subject: [PATCH] agent: reduce reference count for failed mount The kata agent adds a reference for each storage object before mount and skip mount again if the storage object is known. We need to remove the object reference if mount fails. Fixes: #5364 Signed-off-by: Feng Wang --- src/agent/src/mount.rs | 24 ++++++++++++++---------- 1 file changed, 14 insertions(+), 10 deletions(-) diff --git a/src/agent/src/mount.rs b/src/agent/src/mount.rs index 8a43179c13..1db16343ef 100644 --- a/src/agent/src/mount.rs +++ b/src/agent/src/mount.rs @@ -779,16 +779,20 @@ pub async fn add_storages( } }; - // Todo need to rollback the mounted storage if err met. - - if res.is_err() { - error!( - logger, - "add_storages failed, storage: {:?}, error: {:?} ", storage, res - ); - } - - let mount_point = res?; + let mount_point = match res { + Err(e) => { + error!( + logger, + "add_storages failed, storage: {:?}, error: {:?} ", storage, e + ); + let mut sb = sandbox.lock().await; + sb.unset_sandbox_storage(&storage.mount_point) + .map_err(|e| warn!(logger, "fail to unset sandbox storage {:?}", e)) + .ok(); + return Err(e); + } + Ok(m) => m, + }; if !mount_point.is_empty() { mount_list.push(mount_point);