tools/hotplug: Fix hotplug hook script arrangements not to always fail
authorIan Jackson <Ian.Jackson@eu.citrix.com>
Fri, 3 Jun 2011 14:04:30 +0000 (15:04 +0100)
committerIan Jackson <Ian.Jackson@eu.citrix.com>
Fri, 3 Jun 2011 14:04:30 +0000 (15:04 +0100)
The new feature introduced in 23401:a44b12ee2fd3 was broken; it in
general always fails, at least if there are no hotplug scripts.

If there are no hooks, call_hooks ends up running this:
  [ -x ".....*.hook" ] && . "..... *.hook"

This does not directly trigger set -e and sigerr.  However, it is the
last command exected in call_hooks.  So the return status of
call_hooks is an error, and thus a sigerr happens when call_hooks
returns.

The bug affects xl and xm.  However xl does not detect failure of the
hotplug script.

Change the script to use if...then rather than &&, as the latter has
very confusing and undesirable semantics.

Signed-off-by: Ian Jackson <ian.jackson@eu.citrix.com>
Committed-by: Ian Jackson <ian.jackson@eu.citrix.com>
tools/hotplug/Linux/xen-hotplug-common.sh

index 95beab0ec56be516aa0b219d7421beac8fd1aba5..8f6557df739f40ef5ada48bdbf61bd84e0409f5a 100644 (file)
@@ -106,7 +106,7 @@ xenstore_write() {
 #
 call_hooks() {
   for f in /etc/xen/scripts/${1}-${2}.d/*.hook; do
-    [ -x "$f" ] && . "$f"
+    if [ -x "$f" ]; then . "$f"; fi
   done
 }