VBOX: Only attempt to unregister the VM on an unrecoverable startup error.
VBOX: Attempt to detect the VM process ID for all recoverable startup errors and report to BOINC.
VBOX: If the target VM is already running at the time we attempt to start it, pass its process ID to BOINC and temporarily shutdown the task. Let BOINC clean-up the environment and relaunch us in 5 minutes.
Deleting previous checkpoints take progressively longer the longer the VM has been running. The previous method just added 1 second of elapsed time to a variable instead of the real amount of wall clock time to the variable.
VBOX: Adjust the set_cpu_usage() and set_network_usage() function prototypes to use ints and handle the preference conversion in the calling function.
VBOX: Set the minimum CPU usage value to 5%, if for some reason somebody chooses 0% (on purpose or bug) VirtualBox goes nuts. This should give the VM at least enough time to render a few frames and eventually boot.
Set the temporary exit delay to one day if an incompatible version is detected. This gives the volunteer a chance to take corrective action before the task errors out after it exceeds its deadline.
6.10 and older do not detect if VirtualBox has been installed. If a VM job is assigned to a host running on an old client and the wrapper detects VirtualBox is not installed reschedule the job for execution at a later date. This prevents the client from requesting excessive amounts of work which will all fail. Eventually the job will error out when it passes its deadline.
controller to use. It can be specified by adding the following
tags to vbox_job.xml:
<vm_disk_controller_type></vm_disk_controller_type>
<vm_disk_controller_model></vm_disk_controller_model>
Executing vboxmanage --help will list the available options in the
storeagectl section.
Deleting stale snapshots now consists of enumerating the existing
snapshots and deleting all but the most recent snapshot. This fixes
the problem where, for one reason or another, a snapshot could not
be deleted at one point in time. The wrapper would just continue to
create new ones and was unable to successfully deal with the older
ones. Disk space would eventually run out.
Previously: elapsed_time was just incremented with the value of the polling
period each iteraction through the main loop. This introduced issues
when vboxmanage lagged for whatever reason. This lag could go as high as 5
seconds. Over the timespan of a day this could increase the wall clock time
of a task a great deal.
Now: elapsed_time is incremented with the time it took to execute the main
loop.
guest VM is 64-bit. 64-bit guest vms require hardware virtualization
and should fail without it.
- VBOX: Implement the <copy_to_shared/> directive in the vbox_job.xml file.
if <copy_to_shared>init_data.xml</copy_to_shared> is set, the wrapper will
copy the init_data.xml file to the shared directory before the VM is launched.
svn path=/trunk/boinc/; revision=25973