exciting, but it's there to encourage the creation of more interesting ones. A
test target has been added to the main Makefile, and the one in tools/python.
Signed-off-by: Ewan Mellor <ewan@xensource.com>
to be created with the same name, fixing the race condition inside XendDomain
that caused bug #278.
Move the state_set(TERMINATED) call onto the end of cleanupDomain rather than
destroyDomain, so that this flag is set when XendDomain cleans up a domain
that was killed without going through Xend.
Remove is_terminated, as this check is no longer necessary, since we are using
Zombie prefixes instead.
Signed-off-by: Ewan Mellor <ewan@xensource.com>
be able to show them any longer, as the paths in the store have gone. Don't
call cleanupVm when a domain dies, as localhost-migrating VMs will be blown
away by this (there is actually a race between the saving process and the
resuming process). This fixes bug #276.
Signed-off-by: Ewan Mellor <ewan@xensource.com>
sure that the child's pipes are closed even under that exception. Move the
handling of POLLHUP to the end of the loop, so that we guarantee to read any
remaining data from the child if POLLHUP and POLLIN appear at the same time.
Signed-off-by: Ewan Mellor <ewan@xensource.com>
#280. The cpu/<id>/availability paths had moved into /vm, but that is not
easily accessible by the hotplugging driver, so I have created a /vm entry
called vcpu_avail, so that the setting migrates along with the domain, and
moved the cpu/<id> ones back to /local/domain.
Don't try and destroy the domain twice if it fails within construct. This
wasn't harming anything, but there's no need.
Signed-off-by: Ewan Mellor <ewan@xensource.com>
messages. This closes bug #281. Removed references to XendRoot where these
have become unnecessary either through the work above or just through time.
Renamed some parameters in event.py, to mark them as unused. Fix a call to a
base class constructor there too.
Signed-off-by: Ewan Mellor <ewan@xensource.com>
forkHelper function. Change the handling of file descriptor closure to wait
until both stdout and stderr descriptors have closed. This may fix the
intermittent bug seen whereby xm restore; xend restart leaves the domain in a
misconfigured state, presumably because IntroduceDomain is not being called by
XendCheckpoint.restore.
Signed-off-by: Ewan Mellor <ewan@xensource.com>
expecting domains_lock protection. Remove notifications through eserver for
_add_domain and _delete_domain, and remove the notify parameters therein.
Tidy the exception handling in domain_restore_fd.
Signed-off-by: Ewan Mellor <ewan@xensource.com>
Tidy exception handling, and rename local 'channel' variable which was clashing
with the identical global name.
Signed-off-by: Ewan Mellor <ewan@xensource.com>
entries when a domain closed and on save, which meant that the /vm entries
disappeared when a localhost migration occurred. XendCheckpoint has had extra
exception handling and logging added. It also now calls back through
XendDomain.restore_,which has the correct locking semantics to prevent race
conditions during migration.
Added assertions to XendCheckpoint to ensure that the channels are set after
XendDomainInfo.restore. I don't see why they would not be, and the old code
meant that in the case that they were not, IntroduceDomain would not be called
on the new domain, breaking Xend restart.
relocate calls through XendDomain.domain_restore_fd rather than directly to
XendCheckpoint to isolate XendCheckpoint from the rest of the world, and to
allow XendDomain to pass itself into XendCheckpoint for a callback.
Simplify the XendCheckpoint / XendDomainInfo interlock, giving only two
states, OK and TERMINATED. If XendCheckpoint asks for a suspend, but sees a
shutdown, it is valid for it to proceed -- either way the domain has stopped.
Higher level tools may wish to disallow this, but at the very least, there is
no sense in waiting for a suspend that will never come.
Signed-off-by: Ewan Mellor <ewan@xensource.com>
domain. This allows us to refer to them using an import statement, rather than
a from .. import. This is a step towards getting rid of the xroot hack. All
other references to XendDomainInfo methods need to be doubly qualified (once
for the module, once for the class).
Remove XendDomainDict, replacing it with a simple dictionary, folding the
get_by_name method into XendDomain.
Replace XendDomain.refresh_lock with a domains_lock which goes around any
reference to XendDomain.domains or anything that will create or destroy a
domain. This serialises most accesses through XendDomain, ensuring that we will
not return stale state when racing against the watches fired in separate
threads. This should have fixed bugs #270 and #234.
Added a number of domain_get_xyz methods. Those named xyz_nr are to allow
components internal to XendDomain (XendDomainInfo, XendCheckpoint) to call back
into XendDomain without triggering further calls to XendDomain.refresh. The
other methods simply make it clear which fallback behaviour is expected.
Replace XendDomainInfo.domain_exists with XendDomainInfo.domain_by_name; the
internals of this method needed to change to match those changes above, and it
has been a misnomer for some time.
Signed-off-by: Ewan Mellor <ewan@xensource.com>
on a graceful shutdown. Clarify the semantic difference between poweroff and
halt (we use halt to mean 'shutdown and stop' and poweroff to mean 'shutdown
and do whatever the configured behaviour is').
Signed-off-by: Ewan Mellor <ewan@xensource.com>
on a graceful shutdown. Clarify the semantic difference between poweroff and
halt (we use halt to mean 'shutdown and stop' and poweroff to mean 'shutdown
and do whatever the configured behaviour is').
Signed-off-by: Ewan Mellor <ewan@xensource.com>
the halt shutdown reason inside XendDomainInfo. This indicates that the
domain should be shutdown just like a poweroff, except that the domain is not
restarted, regardless of the on_poweroff configuration setting.
Signed-off-by: Ewan Mellor <ewan@xensource.com>
on a graceful shutdown. Clarify the semantic difference between poweroff and
halt (we use halt to mean 'shutdown and stop' and poweroff to mean 'shutdown
and do whatever the configured behaviour is').
Signed-off-by: Ewan Mellor <ewan@xensource.com>
XendDomain instance passed in.
Remove meaningless indirection of imports through web/reactor.py. Tidy import
statements.
Signed-off-by: Ewan Mellor <ewan@xensource.com>
they actually take effect. Added behaviour "rename-restart" for debugging
purposes, that renames the domain out of the way, preserving it for debugging,
but starts a new domain too.
Add explicit remove of old domain paths when creating a new domain, to avoid
stale information affecting us (by shutting the domain down, for example).
Signed-off-by: Ewan Mellor <ewan@xensource.com>
transient information regarding a domain. This allows live localhost migration,
which is important for testing migration, and also allows migration when we
have a distributed store. The backend paths in the store now refer to the
frontend domain ID, not its UUID, and blktap has changed to match.
To support this split in the information, the cleanup procedure has been split
to match.
Change the save-restore interface between XendDomain, XendDomainInfo, and
XendCheckpoint, to remove some intermingling, in particular taking XendDomain
out of the loop for the restore procedure.
Improved the recovery procedure to avoid trying to destroy dom0 when recovering.
Added a lock around XendDomain.refresh and one around
XendDomainInfo.refreshShutdown, to improve the behaviour when recreating
domains at startup. There are still races here, so more thought needs to be
given to the locking.
Live reconfiguration of an existing domain is temporarily broken.
Signed-off-by: Ewan Mellor <ewan@xensource.com>
the channel-creation logic into eventChannel, making the EventChannel class
simpler. Remove the closeEventChannel method -- it was simply doing a check
for None, and that isn't enough value to justify the extra method when there
is an EventChannel.close method there too.
Signed-off-by: Ewan Mellor <ewan@xensource.com>
store for the current device configuration, and convert it back into the
s-expression used in the config files and the save files. This means that we
can bring the devices up properly on restore.
Signed-off-by: Ewan Mellor <ewan@xensource.com>