ia64/xen-unstable

view install.sh @ 19672:fe84a14aacd1

Serialize iptables calls in hotplug scripts

iptables cannot correctly handle situations when more than one command
is trying to set netfilter rules. In such situations, iptables may fail
with EAGAIN, which results in iptables: Unknown error
18446744073709551615.

Such situation can easily happen when multiple network devices are
configured for a domain as vif hotplug scripts are called in parallel
for all of the network devices.

Signed-off-by: Jiri Denemark <jdenemar@redhat.com>
author Keir Fraser <keir.fraser@citrix.com>
date Thu May 28 11:07:19 2009 +0100 (2009-05-28)
parents e639d53330ba
children edfdeb150f27
line source
1 #!/bin/sh
3 src='./install'
4 if [ -d ./dist ]; then
5 src='./dist/install'
6 fi
8 if ! [ -d $src ]; then
9 echo "ERROR: Could not find a valid distribution directory."
10 echo " If this is a source-only release, try 'make dist'."
11 exit 1
12 fi
14 dst='/'
15 if [ $# -ne 0 ]; then
16 dst=$1
17 fi
19 if ! [ -d $dst ]; then
20 echo "ERROR: You must specify a valid install directory."
21 echo " The specified directory '$dst' is not valid."
22 exit 1
23 fi
25 tmp="`mktemp -d`"
27 echo "Installing Xen from '$src' to '$dst'..."
28 (cd $src; tar -cf - * ) | tar -C "$tmp" -xf -
30 [ -x "$(which udevinfo)" ] && \
31 UDEV_VERSION=$(udevinfo -V | sed -e 's/^[^0-9]* \([0-9]\{1,\}\)[^0-9]\{0,\}/\1/')
33 if [ -n "$UDEV_VERSION" ] && [ $UDEV_VERSION -ge 059 ]; then
34 echo " - installing for udev-based system"
35 rm -rf "$tmp/etc/hotplug"
36 else
37 echo " - installing for hotplug-based system"
38 rm -rf "$tmp/etc/udev"
39 fi
41 echo " - modifying permissions"
42 chmod -R a+rX "$tmp"
44 (cd $tmp; tar -cf - *) | tar --no-same-owner -C "$dst" -xf -
45 rm -rf "$tmp"
47 echo "All done."
49 echo "Checking to see whether prerequisite tools are installed..."
50 cd $src/../check
51 ./chk install
52 echo "All done."
54 exit 0