diff --git a/samples/vboxwrapper/vbox_mscom_impl.cpp b/samples/vboxwrapper/vbox_mscom_impl.cpp index 6d5d878385260f4bf093bef644171d1a5b2d26f9..4a8c099aa5db589e116ed71fbbb164a1f6c8dcbf 100644 --- a/samples/vboxwrapper/vbox_mscom_impl.cpp +++ b/samples/vboxwrapper/vbox_mscom_impl.cpp @@ -1544,6 +1544,8 @@ int VBOX_VM::create_snapshot(double elapsed_time) { CComPtr<IConsole> pConsole; CComPtr<IProgress> pProgress; + if (disable_automatic_checkpoints) return BOINC_SUCCESS; + vboxlog_msg("Creating new snapshot for VM."); // Pause VM - Try and avoid the live snapshot and trigger an online @@ -1646,6 +1648,8 @@ int VBOX_VM::restore_snapshot() { CComPtr<ISnapshot> pSnapshot; CComPtr<IProgress> pProgress; + if (disable_automatic_checkpoints) return BOINC_SUCCESS; + rc = m_pPrivate->m_pVirtualBox->FindMachine(CComBSTR(vm_name.c_str()), &pMachineRO); if (SUCCEEDED(rc)) { rc = pSession.CoCreateInstance(CLSID_Session); diff --git a/samples/vboxwrapper/vbox_vboxmanage.cpp b/samples/vboxwrapper/vbox_vboxmanage.cpp index 37b0e4e093064c1d89c3052c857a09e78716a6ef..44805be255414e716f39fcadec6f89e38cf89a8e 100644 --- a/samples/vboxwrapper/vbox_vboxmanage.cpp +++ b/samples/vboxwrapper/vbox_vboxmanage.cpp @@ -1140,7 +1140,9 @@ int VBOX_VM::create_snapshot(double elapsed_time) { string command; string output; char buf[256]; - int retval; + int retval = BOINC_SUCCESS; + + if (disable_automatic_checkpoints) return BOINC_SUCCESS; vboxlog_msg("Creating new snapshot for VM."); @@ -1253,6 +1255,8 @@ int VBOX_VM::restore_snapshot() { string output; int retval = BOINC_SUCCESS; + if (disable_automatic_checkpoints) return BOINC_SUCCESS; + vboxlog_msg("Restore from previously saved snapshot."); command = "snapshot \"" + vm_name + "\" "; diff --git a/samples/vboxwrapper/vboxjob.cpp b/samples/vboxwrapper/vboxjob.cpp index 6d86dc9baeec3a1a0817b938f889a888b9a2f856..79b4e95ee50e5f110a790ebb80f28b1392cae49d 100644 --- a/samples/vboxwrapper/vboxjob.cpp +++ b/samples/vboxwrapper/vboxjob.cpp @@ -112,11 +112,12 @@ void VBOX_JOB::clear() { enable_floppyio = false; enable_cache_disk = false; enable_isocontextualization = false; + enable_network = false; + network_bridged_mode = false; enable_remotedesktop = false; enable_gbac = false; enable_graphics_support = false; - enable_network = false; - network_bridged_mode = false; + disable_automatic_checkpoints = false; pf_guest_port = 0; pf_host_port = 0; port_forwards.clear(); @@ -168,6 +169,7 @@ int VBOX_JOB::parse() { else if (xp.parse_bool("enable_remotedesktop", enable_remotedesktop)) continue; else if (xp.parse_bool("enable_gbac", enable_gbac)) continue; else if (xp.parse_bool("enable_graphics_support", enable_graphics_support)) continue; + else if (xp.parse_bool("disable_automatic_checkpoints", disable_automatic_checkpoints)) continue; else if (xp.parse_int("pf_guest_port", pf_guest_port)) continue; else if (xp.parse_int("pf_host_port", pf_host_port)) continue; else if (xp.parse_string("copy_to_shared", str)) { diff --git a/samples/vboxwrapper/vboxjob.h b/samples/vboxwrapper/vboxjob.h index a8bdd7f129feee995fc79436d7398ef7e5d8ea8a..c60fdfd9e64efb2ebcec6aa1192a597e975819a8 100644 --- a/samples/vboxwrapper/vboxjob.h +++ b/samples/vboxwrapper/vboxjob.h @@ -102,6 +102,9 @@ public: // http://boinc.berkeley.edu/trac/wiki/GraphicsApi#File bool enable_graphics_support; + // whether to disable automatic checkpoint support + bool disable_automatic_checkpoints; + // maximum amount of wall-clock time this VM is allowed to run before // considering itself done. double job_duration; diff --git a/samples/vboxwrapper/vboxwrapper.cpp b/samples/vboxwrapper/vboxwrapper.cpp index 69c16adec073a54049eb3efad70ed628e8e282b1..5d3b7f701daf1c7032963d110236be59405408d5 100644 --- a/samples/vboxwrapper/vboxwrapper.cpp +++ b/samples/vboxwrapper/vboxwrapper.cpp @@ -689,7 +689,7 @@ int main(int argc, char** argv) { return EXIT_TIME_LIMIT_EXCEEDED; } - retval = pVM->run((current_cpu_time > 0)); + retval = pVM->run(current_cpu_time > 0); if (retval) { // All 'failure to start' errors are unrecoverable by default bool unrecoverable_error = true;