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 <robert.bradford@intel.com>
This commit is contained in:
Rob Bradford 2022-10-30 10:07:28 +00:00
parent 86c19816c6
commit ff3fb91ba6

View File

@ -1222,7 +1222,7 @@ impl MemoryManager {
size: usize, size: usize,
hugepages: bool, hugepages: bool,
hugepage_size: Option<u64>, hugepage_size: Option<u64>,
) -> Result<(File, u64), Error> { ) -> Result<FileOffset, Error> {
let (f, f_off) = match backing_file { let (f, f_off) = match backing_file {
Some(ref file) => { Some(ref file) => {
if file.is_dir() { 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)] #[allow(clippy::too_many_arguments)]
@ -1300,10 +1300,16 @@ impl MemoryManager {
host_numa_node: Option<u32>, host_numa_node: Option<u32>,
existing_memory_file: Option<File>, existing_memory_file: Option<File>,
) -> Result<Arc<GuestRegionMmap>, Error> { ) -> Result<Arc<GuestRegionMmap>, Error> {
let (f, f_off) = if let Some(f) = existing_memory_file { let fo = if let Some(f) = existing_memory_file {
(f, file_offset) Some(FileOffset::new(f, file_offset))
} else { } 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 let mut mmap_flags = libc::MAP_NORESERVE
@ -1317,13 +1323,8 @@ impl MemoryManager {
} }
let region = GuestRegionMmap::new( let region = GuestRegionMmap::new(
MmapRegion::build( MmapRegion::build(fo, size, libc::PROT_READ | libc::PROT_WRITE, mmap_flags)
Some(FileOffset::new(f, f_off)), .map_err(Error::GuestMemoryRegion)?,
size,
libc::PROT_READ | libc::PROT_WRITE,
mmap_flags,
)
.map_err(Error::GuestMemoryRegion)?,
start_addr, start_addr,
) )
.map_err(Error::GuestMemory)?; .map_err(Error::GuestMemory)?;