[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] [Xen-changelog] Break out the hotplug cleanup code into xen-hotplug-cleanup. Claim the block
# HG changeset patch # User emellor@xxxxxxxxxxxxxxxxxxxxxx # Node ID 2d1aaebcbdf7c33e73540128bc4fcd0e0b347d42 # Parent 3cfd8150da41166875bffc360ef67f3e63d95da3 Break out the hotplug cleanup code into xen-hotplug-cleanup. Claim the block script's lock before doing the cleanup, to avoid a race that causes the message "xenstore-list: could not list path backend/vbd/40" in /var/log/hotplug.log, with a subsequent refusal to create the domain, after a domain reboot. This is equivalent to xen-unstable changeset 9003:b30564f40914 (though it's been rebased to 3.0-testing). Signed-off-by: Ewan Mellor <ewan@xxxxxxxxxxxxx> diff -r 3cfd8150da41 -r 2d1aaebcbdf7 tools/examples/Makefile --- a/tools/examples/Makefile Sun Feb 26 15:48:51 2006 +++ b/tools/examples/Makefile Wed Mar 8 22:56:37 2006 @@ -27,6 +27,7 @@ XEN_SCRIPTS += block XEN_SCRIPTS += block-enbd block-nbd XEN_SCRIPTS += vtpm +XEN_SCRIPTS += xen-hotplug-cleanup XEN_SCRIPT_DATA = xen-script-common.sh XEN_SCRIPT_DATA += xen-hotplug-common.sh xen-network-common.sh vif-common.sh XEN_SCRIPT_DATA += block-common.sh vtpm-common.sh diff -r 3cfd8150da41 -r 2d1aaebcbdf7 tools/examples/xen-backend.agent --- a/tools/examples/xen-backend.agent Sun Feb 26 15:48:51 2006 +++ b/tools/examples/xen-backend.agent Wed Mar 8 22:56:37 2006 @@ -18,12 +18,7 @@ add) ;; remove) - # remove device frontend store entries - xenstore-rm -t $(xenstore-read "$XENBUS_PATH/frontend") || true - - # remove device backend store entries - xenstore-rm -t "$XENBUS_PATH" || true - xenstore-rm -t "error/$XENBUS_PATH" || true + /etc/xen/scripts/xen-hotplug-cleanup ;; online) ;; diff -r 3cfd8150da41 -r 2d1aaebcbdf7 tools/examples/xen-backend.rules --- a/tools/examples/xen-backend.rules Sun Feb 26 15:48:51 2006 +++ b/tools/examples/xen-backend.rules Wed Mar 8 22:56:37 2006 @@ -2,6 +2,4 @@ SUBSYSTEM=="xen-backend", KERNEL=="vtpm*", RUN+="/etc/xen/scripts/vtpm $env{ACTION}" SUBSYSTEM=="xen-backend", KERNEL=="vif*", ACTION=="online", RUN+="$env{script} online" SUBSYSTEM=="xen-backend", KERNEL=="vif*", ACTION=="offline", RUN+="$env{script} offline" -SUBSYSTEM=="xen-backend", ACTION=="remove", RUN+="/bin/bash -c '/usr/bin/xenstore-rm -t $$(/usr/bin/xenstore-read $env{XENBUS_PATH}/frontend)'" -SUBSYSTEM=="xen-backend", ACTION=="remove", RUN+="/usr/bin/xenstore-rm -t $env{XENBUS_PATH}" -SUBSYSTEM=="xen-backend", ACTION=="remove", RUN+="/usr/bin/xenstore-rm -t error/$env{XENBUS_PATH}" +SUBSYSTEM=="xen-backend", ACTION=="remove", RUN+="/etc/xen/scripts/xen-hotplug-cleanup" diff -r 3cfd8150da41 -r 2d1aaebcbdf7 tools/examples/xen-hotplug-cleanup --- /dev/null Sun Feb 26 15:48:51 2006 +++ b/tools/examples/xen-hotplug-cleanup Wed Mar 8 22:56:37 2006 @@ -0,0 +1,21 @@ +#! /bin/sh + +dir=$(dirname "$0") +. "$dir/xen-hotplug-common.sh" + +# Claim the lock protecting /etc/xen/scripts/block. This stops a race whereby +# paths in the store would disappear underneath that script as it attempted to +# read from the store checking for device sharing. +# Any other scripts that do similar things will have to have their lock +# claimed too. +# This is pretty horrible, but there's not really a nicer way of solving this. +claim_lock "block" + +# remove device frontend store entries +xenstore-rm -t $(xenstore-read "$XENBUS_PATH/frontend") || true + +# remove device backend store entries +xenstore-rm -t "$XENBUS_PATH" || true +xenstore-rm -t "error/$XENBUS_PATH" || true + +release_lock "block" _______________________________________________ Xen-changelog mailing list Xen-changelog@xxxxxxxxxxxxxxxxxxx http://lists.xensource.com/xen-changelog
|
Lists.xenproject.org is hosted with RackSpace, monitoring our |