emulator-qemu: Create empty cache partition image on demand. Change-Id: Ic6f60042893b6b47b25899acd701df43456b5d6f
diff --git a/Makefile.qemu-launcher b/Makefile.qemu-launcher index 9c26567..16c1dbf 100644 --- a/Makefile.qemu-launcher +++ b/Makefile.qemu-launcher
@@ -26,6 +26,9 @@ LOCAL_CFLAGS := $(qemu_launcher_CFLAGS) LOCAL_STATIC_LIBRARIES := \ emulator-common \ + emulator-libext4_utils \ + emulator-libsparse \ + emulator-libselinux \ emulator-zlib LOCAL_LDLIBS := $(qemu_launcher_LDLIBS) $(call gen-hw-config-defs) @@ -36,6 +39,9 @@ LOCAL_CFLAGS := $(qemu_launcher_CFLAGS) LOCAL_STATIC_LIBRARIES := \ emulator64-common \ + emulator64-libext4_utils \ + emulator64-libsparse \ + emulator64-libselinux \ emulator64-zlib LOCAL_LDLIBS := $(qemu_launcher_LDLIBS) $(call gen-hw-config-defs)
diff --git a/android/qemu-launcher/emulator-qemu.cpp b/android/qemu-launcher/emulator-qemu.cpp index e6b5c35..fdd38a7 100644 --- a/android/qemu-launcher/emulator-qemu.cpp +++ b/android/qemu-launcher/emulator-qemu.cpp
@@ -23,6 +23,7 @@ #include "android/cmdline-option.h" #include "android/globals.h" #include "android/help.h" +#include "android/filesystems/ext4_utils.h" #include "android/kernel/kernel_utils.h" #include "android/main-common.h" #include "android/utils/bufprint.h" @@ -729,6 +730,21 @@ } } + // Create cache partition image if it doesn't exist already. + if (!path_exists(hw->disk_cachePartition_path)) { + D("Creating empty ext4 cache partition: %s", + hw->disk_cachePartition_path); + int ret = android_createEmptyExt4Image( + hw->disk_cachePartition_path, + hw->disk_cachePartition_size, + "cache"); + if (ret < 0) { + derror("Could not create %s: %s", hw->disk_cachePartition_path, + strerror(-ret)); + exit(1); + } + } + // Now build the QEMU parameters. const char* args[128]; int n = 0;