Don't use qcow2 for userdata.

We provide a sparse file directly as a (writable) partition image and
format a filesystem on the partition inside the VM.

To format it only when it's not formatted, the option `formattable` is
added to the fstab entry for the userdata partition.

Bug: 185767624
Test: atest MicrodroidHostTestCases
Change-Id: Ia938fd60071e64170b8280d19c17c4413c769337
diff --git a/microdroid/Android.bp b/microdroid/Android.bp
index 435557e..3ace4a6 100644
--- a/microdroid/Android.bp
+++ b/microdroid/Android.bp
@@ -56,6 +56,8 @@
         "logd",
         "run-as",
         "secilc",
+        "mke2fs",
+        "e2fsdroid",
 
         // "com.android.adbd" requires these,
         "libadbd_auth",
diff --git a/microdroid/README.md b/microdroid/README.md
index d57efa3..a4fcb12 100644
--- a/microdroid/README.md
+++ b/microdroid/README.md
@@ -43,7 +43,7 @@
       "writable": false
     },
     {
-      "image": "/data/local/tmp/microdroid/userdata_composite.qcow2",
+      "image": "/data/local/tmp/microdroid/userdata_composite.img",
       "writable": true
     }
   ]
@@ -63,11 +63,9 @@
 $ adb shell 'cp /apex/com.android.virt/etc/uboot_env.img /data/local/tmp/microdroid'
 $ adb shell 'dd if=/dev/zero of=/data/local/tmp/microdroid/misc.img bs=4k count=256'
 $ adb shell 'dd if=/dev/zero of=/data/local/tmp/microdroid/userdata.img bs=1 count=0 seek=4G'
-$ adb shell 'mkfs.ext4 /data/local/tmp/microdroid/userdata.img'
 $ adb shell 'cd /data/local/tmp/microdroid; /apex/com.android.virt/bin/mk_cdisk /apex/com.android.virt/etc/microdroid_cdisk.json os_composite.img'
 $ adb shell 'cd /data/local/tmp/microdroid; /apex/com.android.virt/bin/mk_cdisk /apex/com.android.virt/etc/microdroid_cdisk_env.json env_composite.img'
 $ adb shell 'cd /data/local/tmp/microdroid; /apex/com.android.virt/bin/mk_cdisk /apex/com.android.virt/etc/microdroid_cdisk_userdata.json userdata_composite.img'
-$ adb shell '/apex/com.android.virt/bin/crosvm create_qcow2 --backing_file=/data/local/tmp/microdroid/userdata_composite.img /data/local/tmp/microdroid/userdata_composite.qcow2'
 $ adb shell 'cd /data/local/tmp/microdroid; /apex/com.android.virt/bin/mk_payload /apex/com.android.virt/etc/microdroid_payload.json payload.img'
 $ adb shell 'chmod go+r /data/local/tmp/microdroid/*-header.img /data/local/tmp/microdroid/*-footer.img /data/local/tmp/microdroid/payload.img.*'
 $ adb push microdroid.json /data/local/tmp/microdroid/microdroid.json
diff --git a/microdroid/fstab b/microdroid/fstab
index 2f4e45f..6e17c3e 100644
--- a/microdroid/fstab
+++ b/microdroid/fstab
@@ -2,4 +2,4 @@
 vendor /vendor ext4 noatime,ro,errors=panic wait,first_stage_mount,logical
 
 # TODO(b/185767624): turn on encryption
-/dev/block/by-name/userdata /data ext4 noatime,nosuid,nodev,errors=panic latemount,wait,check
+/dev/block/by-name/userdata /data ext4 noatime,nosuid,nodev,errors=panic latemount,wait,check,formattable