diff options
author | David 'Digit' Turner <digit@google.com> | 2011-05-04 22:01:28 +0200 |
---|---|---|
committer | David 'Digit' Turner <digit@google.com> | 2011-05-04 22:01:28 +0200 |
commit | 9fb360ec4c47d750711c8f1776c180e3802b0aab (patch) | |
tree | 9239e69398b7905e0faaffca3f558030f468ff75 | |
parent | a87431b1cc389c941c5fc6d061fbd22b101cc7cd (diff) | |
download | external_qemu-9fb360ec4c47d750711c8f1776c180e3802b0aab.zip external_qemu-9fb360ec4c47d750711c8f1776c180e3802b0aab.tar.gz external_qemu-9fb360ec4c47d750711c8f1776c180e3802b0aab.tar.bz2 |
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
-rw-r--r-- | android/console.c | 18 | ||||
-rw-r--r-- | vl-android.c | 4 |
2 files changed, 20 insertions, 2 deletions
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 @@ static int 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 @@ static int 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 @@ static int 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 @@ int main(int argc, char **argv, char **envp) 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"); } } |