From d44320488fd2db344b6b1fd156c22fdf90b82fe2 Mon Sep 17 00:00:00 2001 From: Dylan Reid Date: Wed, 6 Dec 2017 18:20:09 -0800 Subject: main: Add inflate/deflate interface for balloon Change-Id: I0fc63abbed8db303c7d283ce392fd47777b60d19 Reviewed-on: https://chromium-review.googlesource.com/818207 Commit-Ready: Dylan Reid Tested-by: Dylan Reid Reviewed-by: Zach Reizner --- src/linux.rs | 20 +++++++++++++------- 1 file changed, 13 insertions(+), 7 deletions(-) (limited to 'src/linux.rs') diff --git a/src/linux.rs b/src/linux.rs index c57f6b3..c5c7001 100644 --- a/src/linux.rs +++ b/src/linux.rs @@ -253,7 +253,7 @@ pub fn run_config(cfg: Config) -> Result<()> { device_manager.register_mmio(rng_box, rng_jail, &mut cmdline) .map_err(Error::RegisterRng)?; - let (_, balloon_device_socket) = UnixDatagram::pair().map_err(Error::Socket)?; + let (balloon_host_socket, balloon_device_socket) = UnixDatagram::pair().map_err(Error::Socket)?; let balloon_box = Box::new(devices::virtio::Balloon::new(balloon_device_socket) .map_err(Error::BalloonDeviceNew)?); let balloon_jail = if cfg.multiprocess { @@ -387,7 +387,8 @@ pub fn run_config(cfg: Config) -> Result<()> { cfg.vcpu_count.unwrap_or(1), guest_mem, &device_manager.bus, - control_sockets) + control_sockets, + balloon_host_socket) } fn run_kvm(requests: Vec, @@ -396,7 +397,8 @@ fn run_kvm(requests: Vec, vcpu_count: u32, guest_mem: GuestMemory, mmio_bus: &devices::Bus, - control_sockets: Vec) + control_sockets: Vec, + balloon_host_socket: UnixDatagram) -> Result<()> { let kvm = Kvm::new().map_err(Error::Kvm)?; let kernel_start_addr = GuestAddress(KERNEL_START_OFFSET); @@ -414,7 +416,8 @@ fn run_kvm(requests: Vec, let mut next_dev_pfn = BASE_DEV_MEMORY_PFN; for request in requests { let mut running = false; - if let VmResponse::Err(e) = request.execute(&mut vm, &mut next_dev_pfn, &mut running) { + if let VmResponse::Err(e) = request.execute(&mut vm, &mut next_dev_pfn, + &mut running, &balloon_host_socket) { return Err(Error::Vm(e)); } if !running { @@ -573,7 +576,8 @@ fn run_kvm(requests: Vec, exit_evt, sigchld_fd, kill_signaled, - vcpu_handles) + vcpu_handles, + balloon_host_socket) } fn run_control(mut vm: Vm, @@ -583,7 +587,8 @@ fn run_control(mut vm: Vm, exit_evt: EventFd, sigchld_fd: SignalFd, kill_signaled: Arc, - vcpu_handles: Vec>) + vcpu_handles: Vec>, + balloon_host_socket: UnixDatagram) -> Result<()> { const MAX_VM_FD_RECV: usize = 1; @@ -665,7 +670,8 @@ fn run_control(mut vm: Vm, Ok(request) => { let mut running = true; let response = - request.execute(&mut vm, &mut next_dev_pfn, &mut running); + request.execute(&mut vm, &mut next_dev_pfn, + &mut running, &balloon_host_socket); if let Err(e) = response.send(&mut scm, socket.as_ref()) { error!("failed to send VmResponse: {:?}", e); } -- cgit 1.4.1