[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] [Xen-changelog] Rename the commands inside the hotplug scripts to match those used by hotplug
# HG changeset patch # User emellor@xxxxxxxxxxxxxxxxxxxxxx # Node ID e2e7f47e6f79721d97fd7a1f84c5299661aa9ad9 # Parent 9523e6d105119360ce0fd4208d8e6fee19f2bfba Rename the commands inside the hotplug scripts to match those used by hotplug and udev. Pass all commands through from xen-backend.agent or xen-backend.rules rather than second-guessing the individual scripts. This should make it easier to tear down devices cleanly, especially the dangling vifs we are seeing at the moment. Cope with a missing type node inside the block script, as we don't want to resurrect a removed node by writing a hotplug error message. Log failure of iptables command. Signed-off-by: Ewan Mellor <ewan@xxxxxxxxxxxxx> diff -r 9523e6d10511 -r e2e7f47e6f79 tools/examples/block --- a/tools/examples/block Fri Nov 11 16:59:20 2005 +++ b/tools/examples/block Fri Nov 11 17:01:44 2005 @@ -2,6 +2,12 @@ dir=$(dirname "$0") . "$dir/block-common.sh" + +case "$command" in + online | offline) + exit 0 + ;; +esac expand_dev() { local dev @@ -16,10 +22,10 @@ echo -n $dev } -t=$(xenstore_read "$XENBUS_PATH"/type || true) +t=$(xenstore_read_default "$XENBUS_PATH"/type "MISSING") case "$command" in - bind) + add) p=$(xenstore_read "$XENBUS_PATH"/params) case $t in phy) @@ -38,32 +44,25 @@ done exit 1 ;; - - *) - [ -x /etc/xen/scripts/block-"$t" ] && \ - /etc/xen/scripts/block-"$t" bind $p - ;; esac ;; - unbind) - node=$(xenstore_read "$XENBUS_PATH"/node) + remove) case $t in phy) exit 0 ;; file) + node=$(xenstore_read "$XENBUS_PATH"/node) losetup -d $node exit 0 ;; - - *) - [ -x /etc/xen/scripts/block-"$t" ] && \ - /etc/xen/scripts/block-"$t" unbind $node - ;; - esac ;; esac + +# If we've reached here, $t is neither phy nor file, so fire a helper script. +[ -x /etc/xen/scripts/block-"$t" ] && \ + /etc/xen/scripts/block-"$t" "$command" $node diff -r 9523e6d10511 -r e2e7f47e6f79 tools/examples/block-common.sh --- a/tools/examples/block-common.sh Fri Nov 11 16:59:20 2005 +++ b/tools/examples/block-common.sh Fri Nov 11 17:01:44 2005 @@ -19,9 +19,12 @@ dir=$(dirname "$0") . "$dir/xen-hotplug-common.sh" -command="$1" +findCommand "$@" -if [ "$command" != "bind" ] && [ "$command" != "unbind" ] +if [ "$command" != "online" ] && + [ "$command" != "offline" ] && + [ "$command" != "add" ] && + [ "$command" != "remove" ] then log err "Invalid command: $command" exit 1 diff -r 9523e6d10511 -r e2e7f47e6f79 tools/examples/vif-bridge --- a/tools/examples/vif-bridge Fri Nov 11 16:59:20 2005 +++ b/tools/examples/vif-bridge Fri Nov 11 17:01:44 2005 @@ -9,7 +9,7 @@ # places, then this script is the default. # # Usage: -# vif-bridge (up|down) +# vif-bridge (add|remove|online|offline) # # Environment vars: # vif vif interface name (required). @@ -47,7 +47,7 @@ fi case "$command" in - up) + online) if brctl show "$bridge" | grep "$vif" >&/dev/null then log debug "$vif already attached to $bridge" @@ -58,9 +58,9 @@ fatal "brctl addif $bridge $vif failed" ifconfig "$vif" up || fatal "ifconfig $vif up failed" - success ;; - down) + + remove) # vifs are auto-removed from bridge. ifconfig "$vif" down || fatal "ifconfig $vif down failed" ;; @@ -69,3 +69,4 @@ handle_iptable log debug "Successful vif-bridge operation for $vif, bridge $bridge." +success diff -r 9523e6d10511 -r e2e7f47e6f79 tools/examples/vif-common.sh --- a/tools/examples/vif-common.sh Fri Nov 11 16:59:20 2005 +++ b/tools/examples/vif-common.sh Fri Nov 11 17:01:44 2005 @@ -22,11 +22,20 @@ findCommand "$@" -if [ "$command" != "up" ] && [ "$command" != "down" ] +if [ "$command" != "online" ] && + [ "$command" != "offline" ] && + [ "$command" != "add" ] && + [ "$command" != "remove" ] then log err "Invalid command: $command" exit 1 fi + +case "$command" in + add | offline) + exit 0 + ;; +esac # Parameters may be read from the environment, the command line arguments, and @@ -46,7 +55,7 @@ function frob_iptable() { - if [ "$command" == "up" ] + if [ "$command" == "online" ] then local c="-A" else diff -r 9523e6d10511 -r e2e7f47e6f79 tools/examples/vif-nat --- a/tools/examples/vif-nat Fri Nov 11 16:59:20 2005 +++ b/tools/examples/vif-nat Fri Nov 11 17:01:44 2005 @@ -9,7 +9,7 @@ # places, then vif-bridge is the default. # # Usage: -# vif-nat (up|down) +# vif-nat (add|remove|online|offline) # # Environment vars: # vif vif interface name (required). @@ -40,12 +40,12 @@ main_ip=$(ip addr show eth0 | sed -e '/inet /!d;s/^.*inet \([^\s*]\)\s.*$/\1/') case "$command" in - up) + online) ifconfig ${vif} ${vif_ip} netmask ${netmask} up echo 1 >/proc/sys/net/ipv4/conf/${vif}/proxy_arp ipcmd='a' ;; - down) + remove) ifconfig ${vif} down ipcmd='d' ;; diff -r 9523e6d10511 -r e2e7f47e6f79 tools/examples/vif-route --- a/tools/examples/vif-route Fri Nov 11 16:59:20 2005 +++ b/tools/examples/vif-route Fri Nov 11 17:01:44 2005 @@ -9,7 +9,7 @@ # places, then vif-bridge is the default. # # Usage: -# vif-route (up|down) +# vif-route (add|remove|online|offline) # # Environment vars: # vif vif interface name (required). @@ -26,12 +26,12 @@ main_ip=$(ip addr show eth0 | sed -e '/inet /!d;s/^.*inet \([^\s*]\)\s.*$/\1/') case "$command" in - up) + online) ifconfig ${vif} ${main_ip} netmask 255.255.255.255 up echo 1 >/proc/sys/net/ipv4/conf/${vif}/proxy_arp ipcmd='a' ;; - down) + remove) ifdown ${vif} ipcmd='d' ;; diff -r 9523e6d10511 -r e2e7f47e6f79 tools/examples/xen-backend.agent --- a/tools/examples/xen-backend.agent Fri Nov 11 16:59:20 2005 +++ b/tools/examples/xen-backend.agent Fri Nov 11 17:01:44 2005 @@ -2,35 +2,25 @@ PATH=/etc/xen/scripts:$PATH +case "$XENBUS_TYPE" in + vbd) + /etc/xen/scripts/block "$ACTION" + ;; + vif) + [ -n "$script" ] && $script "$ACTION" + ;; +esac + case "$ACTION" in add) - case "$XENBUS_TYPE" in - vbd) - /etc/xen/scripts/block bind - ;; - esac ;; remove) - case "$XENBUS_TYPE" in - vbd) - /etc/xen/scripts/block unbind - ;; - vif) - [ -n "$script" ] && $script down - ;; - esac # remove device backend store entries - xenstore-rm -t "$XENBUS_PATH" - xenstore-rm -t "error/$XENBUS_PATH" + xenstore-rm -t "$XENBUS_PATH" || true + xenstore-rm -t "error/$XENBUS_PATH" || true ;; online) - case "$XENBUS_TYPE" in - vif) - [ -n "$script" ] && $script up - ;; - esac ;; offline) ;; esac - diff -r 9523e6d10511 -r e2e7f47e6f79 tools/examples/xen-backend.rules --- a/tools/examples/xen-backend.rules Fri Nov 11 16:59:20 2005 +++ b/tools/examples/xen-backend.rules Fri Nov 11 17:01:44 2005 @@ -1,4 +1,5 @@ -SUBSYSTEM=="xen-backend", KERNEL=="vbd*", ACTION=="add", RUN+="/etc/xen/scripts/block bind" -SUBSYSTEM=="xen-backend", KERNEL=="vbd*", ACTION=="remove", RUN+="/etc/xen/scripts/block unbind" -SUBSYSTEM=="xen-backend", KERNEL=="vif*", ACTION=="online", RUN+="$env{script} up" +SUBSYSTEM=="xen-backend", KERNEL=="vbd*", RUN+="/etc/xen/scripts/block $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+="/usr/bin/xenstore-rm -t $env{XENBUS_PATH}" +SUBSYSTEM=="xen-backend", ACTION=="remove", RUN+="/usr/bin/xenstore-rm -t error/$env{XENBUS_PATH}" _______________________________________________ Xen-changelog mailing list Xen-changelog@xxxxxxxxxxxxxxxxxxx http://lists.xensource.com/xen-changelog
|
Lists.xenproject.org is hosted with RackSpace, monitoring our |