diff --git a/authfs/service/src/authfs.rs b/authfs/service/src/authfs.rs
index 3e8e0e0..cfd5766 100644
--- a/authfs/service/src/authfs.rs
+++ b/authfs/service/src/authfs.rs
@@ -176,7 +176,7 @@
             bail!("Child has exited: {}", exit_status);
         }
         if start_time.elapsed() > AUTHFS_SETUP_TIMEOUT_SEC {
-            let _ = child.kill();
+            let _ignored = child.kill();
             bail!("Time out mounting authfs");
         }
         sleep(AUTHFS_SETUP_POLL_INTERVAL_MS);
diff --git a/authfs/src/fusefs.rs b/authfs/src/fusefs.rs
index 544a94e..87bdffc 100644
--- a/authfs/src/fusefs.rs
+++ b/authfs/src/fusefs.rs
@@ -587,7 +587,7 @@
 
         match delete_now {
             Ok(true) => {
-                let _ = inode_table.remove(&inode).expect("Removed an existing entry");
+                let _ignored = inode_table.remove(&inode).expect("Removed an existing entry");
             }
             Ok(false) => { /* Let the inode stay */ }
             Err(e) => {
diff --git a/compos/common/compos_client.rs b/compos/common/compos_client.rs
index bc6ab25..232485a 100644
--- a/compos/common/compos_client.rs
+++ b/compos/common/compos_client.rs
@@ -164,7 +164,7 @@
     /// relevant logs to be written.
     pub fn shutdown(self, service: Strong<dyn ICompOsService>) {
         info!("Requesting CompOS VM to shutdown");
-        let _ = service.quit(); // If this fails, the VM is probably dying anyway
+        let _ignored = service.quit(); // If this fails, the VM is probably dying anyway
         self.wait_for_shutdown();
     }
 
diff --git a/compos/composd/src/instance_starter.rs b/compos/composd/src/instance_starter.rs
index fc4c58b..457520f 100644
--- a/compos/composd/src/instance_starter.rs
+++ b/compos/composd/src/instance_starter.rs
@@ -98,17 +98,16 @@
     ) -> Result<CompOsInstance> {
         info!("Creating {} CompOs instance", self.instance_name);
 
-        // Ignore failure here - the directory may already exist.
-        let _ = fs::create_dir(&self.instance_root);
+        fs::create_dir_all(&self.instance_root)?;
 
         // Overwrite any existing instance - it's unlikely to be valid with the current set
         // of APEXes, and finding out it isn't is much more expensive than creating a new one.
         self.create_instance_image(virtualization_service)?;
 
         // Delete existing idsig files. Ignore error in case idsig doesn't exist.
-        let _ = fs::remove_file(&self.idsig);
-        let _ = fs::remove_file(&self.idsig_manifest_apk);
-        let _ = fs::remove_file(&self.idsig_manifest_ext_apk);
+        let _ignored1 = fs::remove_file(&self.idsig);
+        let _ignored2 = fs::remove_file(&self.idsig_manifest_apk);
+        let _ignored3 = fs::remove_file(&self.idsig_manifest_ext_apk);
 
         let instance = self.start_vm(virtualization_service)?;
 
diff --git a/libs/devicemapper/src/lib.rs b/libs/devicemapper/src/lib.rs
index fec0114..a0435e4 100644
--- a/libs/devicemapper/src/lib.rs
+++ b/libs/devicemapper/src/lib.rs
@@ -338,8 +338,8 @@
 
         scopeguard::defer! {
             loopdevice::detach(&data_device).unwrap();
-            _ = delete_device(&dm, device);
-            _ = delete_device(&dm, &device_diff);
+            let _ignored1 = delete_device(&dm, device);
+            let _ignored2 = delete_device(&dm, &device_diff);
         }
 
         let target = DmCryptTargetBuilder::default()
@@ -380,8 +380,8 @@
         let device_diff = device.to_owned() + "_diff";
         scopeguard::defer! {
             loopdevice::detach(&data_device).unwrap();
-            _ = delete_device(&dm, device);
-            _ = delete_device(&dm, &device_diff);
+            let _ignored1 = delete_device(&dm, device);
+            let _ignored2 = delete_device(&dm, &device_diff);
         }
 
         let target = DmCryptTargetBuilder::default()
diff --git a/microdroid_manager/src/main.rs b/microdroid_manager/src/main.rs
index c78b20f..09b23a1 100644
--- a/microdroid_manager/src/main.rs
+++ b/microdroid_manager/src/main.rs
@@ -200,7 +200,7 @@
 }
 
 fn try_main() -> Result<()> {
-    let _ = kernlog::init();
+    let _ignored = kernlog::init();
     info!("started.");
 
     if let Err(e) = set_cloexec_on_vm_payload_service_socket() {
diff --git a/vmclient/src/lib.rs b/vmclient/src/lib.rs
index d67d87e..8f25b99 100644
--- a/vmclient/src/lib.rs
+++ b/vmclient/src/lib.rs
@@ -112,7 +112,7 @@
 
         // Wait for the child to signal that the RpcBinder server is ready
         // by closing its end of the pipe.
-        let _ = File::from(wait_fd).read(&mut [0]);
+        let _ignored = File::from(wait_fd).read(&mut [0]);
 
         Ok(VirtualizationService { client_fd })
     }
