Correct fix for snapshot saving speed
QEMU is a weird animal. The "snapshot" property speeds-up snapshot
saving but also redirect all stores to a temporary file which is
deleted when the emulator exit.
Use a different property to get the desired speed-up. Note that
using "writeback" instead of "unsafe" forces the use of fdatasync()
which will still be horribly slow.
+ Argument checking in avd snapshot commands in the console.
(trying to load a name-less snapshot actually crashes the emulator).
Change-Id: Ie61f110f037bbb3539c7f9892cb03bee8bfec6bd
diff --git a/android/console.c b/android/console.c
index de32ddb..0affb46 100644
--- a/android/console.c
+++ b/android/console.c
@@ -2094,6 +2094,12 @@
do_snapshot_save( ControlClient client, char* args )
{
int ret;
+
+ if (args == NULL) {
+ control_write(client, "KO: argument missing, try 'avd snapshot save <name>'\r\n");
+ return -1;
+ }
+
OutputChannel *err = output_channel_alloc(client, control_write_err_cb);
do_savevm_oc(err, args);
ret = output_channel_written(err);
@@ -2106,6 +2112,12 @@
do_snapshot_load( ControlClient client, char* args )
{
int ret;
+
+ if (args == NULL) {
+ control_write(client, "KO: argument missing, try 'avd snapshot load <name>'\r\n");
+ return -1;
+ }
+
OutputChannel *err = output_channel_alloc(client, control_write_err_cb);
do_loadvm_oc(err, args);
ret = output_channel_written(err);
@@ -2118,6 +2130,12 @@
do_snapshot_del( ControlClient client, char* args )
{
int ret;
+
+ if (args == NULL) {
+ control_write(client, "KO: argument missing, try 'avd snapshot del <name>'\r\n");
+ return -1;
+ }
+
OutputChannel *err = output_channel_alloc(client, control_write_err_cb);
do_delvm_oc(err, args);
ret = output_channel_written(err);
diff --git a/vl-android.c b/vl-android.c
index b024bef..a1b88be 100644
--- a/vl-android.c
+++ b/vl-android.c
@@ -5095,9 +5095,9 @@
hdb_opts = drive_add(spath, HD_ALIAS, 1);
/* VERY IMPORTANT:
* Set this property or the file will be mounted with O_DIRECT,
- * which will slow down snapshot saving.x100 !
+ * which will slow down snapshot saving x100 !
*/
- qemu_opt_set(hdb_opts, "snapshot", "on");
+ qemu_opt_set(hdb_opts, "cache", "unsafe");
}
}