instance.img is actually added as a writable partition

Bootloader doesn't use the partition yet.

Bug: 193504400
Test: atest MicrodroidHostTestCases
Change-Id: I7138d966630ebf79c9b7cbc2ea7343852460e2ec
diff --git a/virtualizationservice/src/aidl.rs b/virtualizationservice/src/aidl.rs
index 1d99c2d..e3579da 100644
--- a/virtualizationservice/src/aidl.rs
+++ b/virtualizationservice/src/aidl.rs
@@ -362,8 +362,7 @@
 ) -> Result<VirtualMachineRawConfig> {
     let apk_file = clone_file(config.apk.as_ref().unwrap())?;
     let idsig_file = clone_file(config.idsig.as_ref().unwrap())?;
-    // TODO(b/193504400) pass this to crosvm
-    let _instance_file = clone_file(config.instanceImage.as_ref().unwrap())?;
+    let instance_file = clone_file(config.instanceImage.as_ref().unwrap())?;
     let config_path = &config.configPath;
 
     let mut apk_zip = ZipArchive::new(&apk_file)?;
@@ -391,6 +390,7 @@
             temporary_directory,
             apk_file,
             idsig_file,
+            instance_file,
             apexes,
             &mut vm_config,
         )?;
diff --git a/virtualizationservice/src/payload.rs b/virtualizationservice/src/payload.rs
index 28ef502..a176e71 100644
--- a/virtualizationservice/src/payload.rs
+++ b/virtualizationservice/src/payload.rs
@@ -162,6 +162,7 @@
     temporary_directory: &Path,
     apk_file: File,
     idsig_file: File,
+    instance_file: File,
     mut apexes: Vec<ApexConfig>,
     vm_config: &mut VirtualMachineRawConfig,
 ) -> Result<()> {
@@ -189,5 +190,12 @@
         });
     }
 
+    // instance image is at the second partition in the second disk.
+    vm_config.disks[1].partitions.push(Partition {
+        label: "vm-instance".to_owned(),
+        images: vec![ParcelFileDescriptor::new(instance_file)],
+        writable: true,
+    });
+
     Ok(())
 }