From ff3fb91ba6faf43f2f0bde9f5f314057e8124f3e Mon Sep 17 00:00:00 2001 From: Rob Bradford Date: Sun, 30 Oct 2022 10:07:28 +0000 Subject: [PATCH] vmm: Refactor creation of the FileOffset for GuestRegionMmap::new() Create this earlier so that it is possible to pass a None in for anonymous mappings. Signed-off-by: Rob Bradford --- vmm/src/memory_manager.rs | 25 +++++++++++++------------ 1 file changed, 13 insertions(+), 12 deletions(-) diff --git a/vmm/src/memory_manager.rs b/vmm/src/memory_manager.rs index ed3dacbc7..934c85a02 100644 --- a/vmm/src/memory_manager.rs +++ b/vmm/src/memory_manager.rs @@ -1222,7 +1222,7 @@ impl MemoryManager { size: usize, hugepages: bool, hugepage_size: Option, - ) -> Result<(File, u64), Error> { + ) -> Result { let (f, f_off) = match backing_file { Some(ref file) => { if file.is_dir() { @@ -1284,7 +1284,7 @@ impl MemoryManager { } }; - Ok((f, f_off)) + Ok(FileOffset::new(f, f_off)) } #[allow(clippy::too_many_arguments)] @@ -1300,10 +1300,16 @@ impl MemoryManager { host_numa_node: Option, existing_memory_file: Option, ) -> Result, Error> { - let (f, f_off) = if let Some(f) = existing_memory_file { - (f, file_offset) + let fo = if let Some(f) = existing_memory_file { + Some(FileOffset::new(f, file_offset)) } else { - Self::open_memory_file(backing_file, file_offset, size, hugepages, hugepage_size)? + Some(Self::open_memory_file( + backing_file, + file_offset, + size, + hugepages, + hugepage_size, + )?) }; let mut mmap_flags = libc::MAP_NORESERVE @@ -1317,13 +1323,8 @@ impl MemoryManager { } let region = GuestRegionMmap::new( - MmapRegion::build( - Some(FileOffset::new(f, f_off)), - size, - libc::PROT_READ | libc::PROT_WRITE, - mmap_flags, - ) - .map_err(Error::GuestMemoryRegion)?, + MmapRegion::build(fo, size, libc::PROT_READ | libc::PROT_WRITE, mmap_flags) + .map_err(Error::GuestMemoryRegion)?, start_addr, ) .map_err(Error::GuestMemory)?;