mirror of
				https://github.com/kata-containers/kata-containers.git
				synced 2025-10-31 17:37:20 +00:00 
			
		
		
		
	agent: add io.katacontainers.fs-opt.overlay-rw option
This causes the overlay-fs driver to add the `upperdir` and `workdir` options to an overlay-fs mount so that the mount becomes writable using a discardable directory under the container id. Fixes: #7536 Signed-off-by: Wedson Almeida Filho <walmeida@microsoft.com>
This commit is contained in:
		| @@ -340,8 +340,33 @@ pub async fn update_ephemeral_mounts( | |||||||
| async fn overlayfs_storage_handler( | async fn overlayfs_storage_handler( | ||||||
|     logger: &Logger, |     logger: &Logger, | ||||||
|     storage: &Storage, |     storage: &Storage, | ||||||
|  |     cid: Option<&str>, | ||||||
|     _sandbox: Arc<Mutex<Sandbox>>, |     _sandbox: Arc<Mutex<Sandbox>>, | ||||||
| ) -> Result<String> { | ) -> Result<String> { | ||||||
|  |     if storage | ||||||
|  |         .options | ||||||
|  |         .iter() | ||||||
|  |         .any(|e| e == "io.katacontainers.fs-opt.overlay-rw") | ||||||
|  |     { | ||||||
|  |         let cid = cid.ok_or_else(|| anyhow!("No container id in rw overlay"))?; | ||||||
|  |         let cpath = Path::new(crate::rpc::CONTAINER_BASE).join(cid); | ||||||
|  |         let work = cpath.join("work"); | ||||||
|  |         let upper = cpath.join("upper"); | ||||||
|  |  | ||||||
|  |         fs::create_dir_all(&work).context("Creating overlay work directory")?; | ||||||
|  |         fs::create_dir_all(&upper).context("Creating overlay upper directory")?; | ||||||
|  |  | ||||||
|  |         let mut storage = storage.clone(); | ||||||
|  |         storage.fstype = "overlay".into(); | ||||||
|  |         storage | ||||||
|  |             .options | ||||||
|  |             .push(format!("upperdir={}", upper.to_string_lossy())); | ||||||
|  |         storage | ||||||
|  |             .options | ||||||
|  |             .push(format!("workdir={}", work.to_string_lossy())); | ||||||
|  |         return common_storage_handler(logger, &storage); | ||||||
|  |     } | ||||||
|  |  | ||||||
|     common_storage_handler(logger, storage) |     common_storage_handler(logger, storage) | ||||||
| } | } | ||||||
|  |  | ||||||
| @@ -869,7 +894,7 @@ pub async fn add_storages( | |||||||
|                 ephemeral_storage_handler(&logger, &storage, sandbox.clone()).await |                 ephemeral_storage_handler(&logger, &storage, sandbox.clone()).await | ||||||
|             } |             } | ||||||
|             DRIVER_OVERLAYFS_TYPE => { |             DRIVER_OVERLAYFS_TYPE => { | ||||||
|                 overlayfs_storage_handler(&logger, &storage, sandbox.clone()).await |                 overlayfs_storage_handler(&logger, &storage, cid.as_deref(), sandbox.clone()).await | ||||||
|             } |             } | ||||||
|             DRIVER_MMIO_BLK_TYPE => { |             DRIVER_MMIO_BLK_TYPE => { | ||||||
|                 virtiommio_blk_storage_handler(&logger, &storage, sandbox.clone()).await |                 virtiommio_blk_storage_handler(&logger, &storage, sandbox.clone()).await | ||||||
|   | |||||||
| @@ -84,7 +84,7 @@ use std::io::{BufRead, BufReader, Write}; | |||||||
| use std::os::unix::fs::FileExt; | use std::os::unix::fs::FileExt; | ||||||
| use std::path::PathBuf; | use std::path::PathBuf; | ||||||
|  |  | ||||||
| const CONTAINER_BASE: &str = "/run/kata-containers"; | pub const CONTAINER_BASE: &str = "/run/kata-containers"; | ||||||
| const MODPROBE_PATH: &str = "/sbin/modprobe"; | const MODPROBE_PATH: &str = "/sbin/modprobe"; | ||||||
|  |  | ||||||
| /// the iptables seriers binaries could appear either in /sbin | /// the iptables seriers binaries could appear either in /sbin | ||||||
|   | |||||||
		Reference in New Issue
	
	Block a user