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)
 }
