From c58dd761f433d02565d760c7bee4484f057ce351 Mon Sep 17 00:00:00 2001 From: Sebastien Boeuf Date: Mon, 24 Aug 2020 11:09:01 +0200 Subject: [PATCH] vmm: Remove 'file' option from MemoryConfig After the introduction of user defined memory zones, we can now remove the deprecated 'file' option from --memory parameter. This makes this parameter simpler, letting more advanced users define their own custom memory zones through the dedicated parameter. Signed-off-by: Sebastien Boeuf --- src/main.rs | 13 ---------- test_data/cloud-init/ubuntu/user-data | 2 +- vmm/src/api/openapi/cloud-hypervisor.yaml | 2 -- vmm/src/config.rs | 31 +++-------------------- vmm/src/memory_manager.rs | 8 +++--- 5 files changed, 8 insertions(+), 48 deletions(-) diff --git a/src/main.rs b/src/main.rs index 969c7a955..63190c530 100644 --- a/src/main.rs +++ b/src/main.rs @@ -526,7 +526,6 @@ mod unit_tests { }, memory: MemoryConfig { size: 536_870_912, - file: None, mergeable: false, hotplug_method: HotplugMethod::Acpi, hotplug_size: None, @@ -644,18 +643,6 @@ mod unit_tests { }"#, true, ), - ( - vec![ - "cloud-hypervisor", "--kernel", "/path/to/kernel", - "--memory", - "size=1G,file=/path/to/shared/file", - ], - r#"{ - "kernel": {"path": "/path/to/kernel"}, - "memory": {"size": 1073741824, "file": "/path/to/shared/file"} - }"#, - true, - ), ( vec!["cloud-hypervisor", "--kernel", "/path/to/kernel", "--memory", "size=1G,mergeable=on"], r#"{ diff --git a/test_data/cloud-init/ubuntu/user-data b/test_data/cloud-init/ubuntu/user-data index e9e65e639..86ebff765 100644 --- a/test_data/cloud-init/ubuntu/user-data +++ b/test_data/cloud-init/ubuntu/user-data @@ -38,4 +38,4 @@ write_files: # 1G ram requires 512 pages echo 512 | sudo tee /proc/sys/vm/nr_hugepages sudo chmod a+rwX /dev/hugepages - /mnt/cloud-hypervisor --kernel /mnt/vmlinux --cmdline "console=hvc0 reboot=k panic=1 nomodules i8042.noaux i8042.nomux i8042.nopnp i8042.dumbkbd root=/dev/vda1 VFIOTAG" --disk path=/mnt/focal-server-cloudimg-amd64-custom.qcow2 path=/mnt/cloudinit.img --cpus boot=1 --memory size=512M,hotplug_size=1G,file=/dev/hugepages --device path=/sys/bus/pci/devices/0000:00:06.0/ path=/sys/bus/pci/devices/0000:00:07.0/ --api-socket /tmp/ch_api.sock + /mnt/cloud-hypervisor --kernel /mnt/vmlinux --cmdline "console=hvc0 reboot=k panic=1 nomodules i8042.noaux i8042.nomux i8042.nopnp i8042.dumbkbd root=/dev/vda1 VFIOTAG" --disk path=/mnt/focal-server-cloudimg-amd64-custom.qcow2 path=/mnt/cloudinit.img --cpus boot=1 --memory size=512M,hotplug_size=1G,hugepages=on --device path=/sys/bus/pci/devices/0000:00:06.0/ path=/sys/bus/pci/devices/0000:00:07.0/ --api-socket /tmp/ch_api.sock diff --git a/vmm/src/api/openapi/cloud-hypervisor.yaml b/vmm/src/api/openapi/cloud-hypervisor.yaml index a2d37fc9e..72a58e517 100644 --- a/vmm/src/api/openapi/cloud-hypervisor.yaml +++ b/vmm/src/api/openapi/cloud-hypervisor.yaml @@ -481,8 +481,6 @@ components: hotplug_size: type: integer format: int64 - file: - type: string mergeable: type: boolean default: false diff --git a/vmm/src/config.rs b/vmm/src/config.rs index 666d3db4d..b6be0035c 100644 --- a/vmm/src/config.rs +++ b/vmm/src/config.rs @@ -360,8 +360,6 @@ pub struct MemoryZoneConfig { pub struct MemoryConfig { pub size: u64, #[serde(default)] - pub file: Option, - #[serde(default)] pub mergeable: bool, #[serde(default)] pub hotplug_method: HotplugMethod, @@ -398,7 +396,6 @@ impl MemoryConfig { .map_err(Error::ParseMemory)? .unwrap_or(ByteSized(DEFAULT_MEMORY_MB << 20)) .0; - let file = parser.get("file").map(PathBuf::from); let mergeable = parser .convert::("mergeable") .map_err(Error::ParseMemory)? @@ -477,7 +474,6 @@ impl MemoryConfig { Ok(MemoryConfig { size, - file, mergeable, hotplug_method, hotplug_size, @@ -494,7 +490,6 @@ impl Default for MemoryConfig { fn default() -> Self { MemoryConfig { size: DEFAULT_MEMORY_MB << 20, - file: None, mergeable: false, hotplug_method: HotplugMethod::Acpi, hotplug_size: None, @@ -1288,10 +1283,6 @@ impl VmConfig { return Err(ValidationError::CpusMaxLowerThanBoot); } - if self.memory.file.is_some() { - error!("Use of backing file ('--memory file=') is deprecated. Use the 'shared' and 'hugepages' controls."); - } - if let Some(disks) = &self.disks { for disk in disks { if disk.vhost_socket.as_ref().and(disk.path.as_ref()).is_some() { @@ -1489,21 +1480,16 @@ mod tests { let mut parser = OptionParser::new(); parser .add("size") - .add("file") .add("mergeable") .add("hotplug_method") .add("hotplug_size"); - assert!(parser - .parse("size=128M,file=/dev/shm,hanging_param") - .is_err()); - assert!(parser - .parse("size=128M,file=/dev/shm,too_many_equals=foo=bar") - .is_err()); - assert!(parser.parse("size=128M,file=/dev/shm").is_ok()); + assert!(parser.parse("size=128M,hanging_param").is_err()); + assert!(parser.parse("size=128M,too_many_equals=foo=bar").is_err()); + assert!(parser.parse("size=128M,file=/dev/shm").is_err()); + assert!(parser.parse("size=128M").is_ok()); assert_eq!(parser.get("size"), Some("128M".to_owned())); - assert_eq!(parser.get("file"), Some("/dev/shm".to_owned())); assert!(!parser.is_set("mergeable")); assert!(parser.is_set("size")); Ok(()) @@ -1557,14 +1543,6 @@ mod tests { MemoryConfig::parse("size=512M", None)?, MemoryConfig::default() ); - assert_eq!( - MemoryConfig::parse("size=512M,file=/some/file", None)?, - MemoryConfig { - size: 512 << 20, - file: Some(PathBuf::from("/some/file")), - ..Default::default() - } - ); assert_eq!( MemoryConfig::parse("size=512M,mergeable=on", None)?, MemoryConfig { @@ -2016,7 +1994,6 @@ mod tests { }, memory: MemoryConfig { size: 536_870_912, - file: None, mergeable: false, hotplug_method: HotplugMethod::Acpi, hotplug_size: None, diff --git a/vmm/src/memory_manager.rs b/vmm/src/memory_manager.rs index 7d8f73e44..774806dcc 100644 --- a/vmm/src/memory_manager.rs +++ b/vmm/src/memory_manager.rs @@ -64,7 +64,6 @@ pub struct MemoryManager { pub vm: Arc, hotplug_slots: Vec, selected_slot: usize, - backing_file: Option, mergeable: bool, allocator: Arc>, hotplug_method: HotplugMethod, @@ -371,7 +370,7 @@ impl MemoryManager { for region in ram_regions.iter() { mem_regions.push(MemoryManager::create_ram_region( - &config.file, + &None, 0, region.0, region.1, @@ -438,7 +437,7 @@ impl MemoryManager { if !use_zones { virtiomem_region = Some(MemoryManager::create_ram_region( - &config.file, + &None, 0, start_addr, size as usize, @@ -490,7 +489,6 @@ impl MemoryManager { vm, hotplug_slots, selected_slot: 0, - backing_file: config.file.clone(), mergeable: config.mergeable, allocator: allocator.clone(), hotplug_method: config.hotplug_method.clone(), @@ -791,7 +789,7 @@ impl MemoryManager { // Allocate memory for the region let region = MemoryManager::create_ram_region( - &self.backing_file, + &None, 0, start_addr, size,