Use preserved_fds rather than fd_mappings.

Test: atest VirtualizationTestCases
Change-Id: Ie5d9bc99de8ff2f4682441ab3753336ba1014cc9
diff --git a/virtualizationservice/src/aidl.rs b/virtualizationservice/src/aidl.rs
index b1b0b38..ce9a080 100644
--- a/virtualizationservice/src/aidl.rs
+++ b/virtualizationservice/src/aidl.rs
@@ -28,7 +28,6 @@
 use android_system_virtualizationservice::binder::{
     self, BinderFeatures, ExceptionCode, Interface, ParcelFileDescriptor, Status, Strong, ThreadState,
 };
-use command_fds::FdMapping;
 use disk::QcowFile;
 use log::{debug, error, warn};
 use std::convert::TryInto;
@@ -117,17 +116,12 @@
             params: config.params.to_owned(),
             protected: config.protected_vm,
         };
-        let composite_disk_mappings: Vec<_> = indirect_files
-            .iter()
-            .map(|file| {
-                let fd = file.as_raw_fd();
-                FdMapping { parent_fd: fd, child_fd: fd }
-            })
-            .collect();
+        let composite_disk_fds: Vec<_> =
+            indirect_files.iter().map(|file| file.as_raw_fd()).collect();
         let instance = VmInstance::start(
             &crosvm_config,
             log_fd,
-            &composite_disk_mappings,
+            &composite_disk_fds,
             temporary_directory,
             requester_uid,
             requester_sid,
diff --git a/virtualizationservice/src/crosvm.rs b/virtualizationservice/src/crosvm.rs
index 669c631..ae8388a 100644
--- a/virtualizationservice/src/crosvm.rs
+++ b/virtualizationservice/src/crosvm.rs
@@ -17,11 +17,11 @@
 use crate::aidl::VirtualMachineCallbacks;
 use crate::Cid;
 use anyhow::{bail, Error};
-use command_fds::{CommandFdExt, FdMapping};
+use command_fds::CommandFdExt;
 use log::{debug, error, info};
 use shared_child::SharedChild;
 use std::fs::{remove_dir_all, File};
-use std::os::unix::io::AsRawFd;
+use std::os::unix::io::{AsRawFd, RawFd};
 use std::path::PathBuf;
 use std::process::Command;
 use std::sync::atomic::{AtomicBool, Ordering};
@@ -102,13 +102,13 @@
     pub fn start(
         config: &CrosvmConfig,
         log_fd: Option<File>,
-        composite_disk_mappings: &[FdMapping],
+        composite_disk_fds: &[RawFd],
         temporary_directory: PathBuf,
         requester_uid: u32,
         requester_sid: String,
         requester_debug_pid: i32,
     ) -> Result<Arc<VmInstance>, Error> {
-        let child = run_vm(config, log_fd, composite_disk_mappings)?;
+        let child = run_vm(config, log_fd, composite_disk_fds)?;
         let instance = Arc::new(VmInstance::new(
             child,
             config.cid,
@@ -161,7 +161,7 @@
 fn run_vm(
     config: &CrosvmConfig,
     log_fd: Option<File>,
-    composite_disk_mappings: &[FdMapping],
+    composite_disk_fds: &[RawFd],
 ) -> Result<SharedChild, Error> {
     validate_config(config)?;
 
@@ -181,14 +181,14 @@
     }
 
     // Keep track of what file descriptors should be mapped to the crosvm process.
-    let mut fd_mappings = composite_disk_mappings.to_vec();
+    let mut preserved_fds = composite_disk_fds.to_vec();
 
     if let Some(bootloader) = &config.bootloader {
-        command.arg("--bios").arg(add_fd_mapping(&mut fd_mappings, bootloader));
+        command.arg("--bios").arg(add_preserved_fd(&mut preserved_fds, bootloader));
     }
 
     if let Some(initrd) = &config.initrd {
-        command.arg("--initrd").arg(add_fd_mapping(&mut fd_mappings, initrd));
+        command.arg("--initrd").arg(add_preserved_fd(&mut preserved_fds, initrd));
     }
 
     if let Some(params) = &config.params {
@@ -198,15 +198,15 @@
     for disk in &config.disks {
         command
             .arg(if disk.writable { "--rwdisk" } else { "--disk" })
-            .arg(add_fd_mapping(&mut fd_mappings, &disk.image));
+            .arg(add_preserved_fd(&mut preserved_fds, &disk.image));
     }
 
     if let Some(kernel) = &config.kernel {
-        command.arg(add_fd_mapping(&mut fd_mappings, kernel));
+        command.arg(add_preserved_fd(&mut preserved_fds, kernel));
     }
 
-    debug!("Setting mappings {:?}", fd_mappings);
-    command.fd_mappings(fd_mappings)?;
+    debug!("Preserving FDs {:?}", preserved_fds);
+    command.preserved_fds(preserved_fds);
 
     info!("Running {:?}", command);
     let result = SharedChild::spawn(&mut command)?;
@@ -224,10 +224,10 @@
     Ok(())
 }
 
-/// Adds a mapping for `file` to `fd_mappings`, and returns a string of the form "/proc/self/fd/N"
-/// where N is the file descriptor for the child process.
-fn add_fd_mapping(fd_mappings: &mut Vec<FdMapping>, file: &File) -> String {
+/// Adds the file descriptor for `file` to `preserved_fds`, and returns a string of the form
+/// "/proc/self/fd/N" where N is the file descriptor.
+fn add_preserved_fd(preserved_fds: &mut Vec<RawFd>, file: &File) -> String {
     let fd = file.as_raw_fd();
-    fd_mappings.push(FdMapping { parent_fd: fd, child_fd: fd });
+    preserved_fds.push(fd);
     format!("/proc/self/fd/{}", fd)
 }