From: Evan Broder Date: Sat, 2 Jan 2010 00:07:46 +0000 (-0500) Subject: Don't try to start sysvms in the invirt-xen-config init script. X-Git-Tag: 0.0.27~7 X-Git-Url: http://xvm.mit.edu/gitweb/invirt/packages/invirt-xen-config.git/commitdiff_plain/07c01c18b56a05c5dd884cd17cfe19d093fb5ead Don't try to start sysvms in the invirt-xen-config init script. This code just doesn't work. In fact, I've seen it result in 0, 1, or >1 instances of sysvms running simultaneously, which makes it officially worthless. svn path=/trunk/packages/invirt-xen-config/; revision=2829 --- diff --git a/debian/changelog b/debian/changelog index a6157cf..ba03a99 100644 --- a/debian/changelog +++ b/debian/changelog @@ -1,8 +1,13 @@ invirt-xen-config (0.0.27) unstable; urgency=low + [ Greg Brockman ] * Nuked the pinning of libxen3 - -- Greg Brockman Fri, 01 Jan 2010 18:28:45 -0500 + [ Evan Broder ] + * Don't try to start sysvms in the invirt-xen-config init script. The + code has never been reliable. + + -- Evan Broder Fri, 01 Jan 2010 17:58:57 -0600 invirt-xen-config (0.0.26) unstable; urgency=low diff --git a/debian/invirt-xen-config.init b/debian/invirt-xen-config.init index a9fcd30..8b3b226 100755 --- a/debian/invirt-xen-config.init +++ b/debian/invirt-xen-config.init @@ -13,8 +13,6 @@ PACKAGE=invirt-xen-config NAME="$PACKAGE" DESC="Invirt Xen host" PARENTPACKAGE=xend -SYSVM_FILES=($(run-parts --list /etc/xen/sysvms)) -SYSVMS=("${SYSVM_FILES[@]/#\/etc\/xen\/sysvms\/}") GEN_FILES=(/etc/xen/xend-config.sxp.invirt) dpkg -s "$PACKAGE" >/dev/null 2>/dev/null || exit 0 @@ -22,56 +20,9 @@ dpkg -s "$PACKAGE" >/dev/null 2>/dev/null || exit 0 . /lib/init/gen-files.sh . /lib/init/std-init.sh -start_sysvm() { - # Attempt to start a sysvm, but only if it's not running already - # somewhere on the cluster - - VM="$1" - LV="${VM}_hda" - DISK="/dev/xenvg/$LV" - - # Don't bother trying to start the VM if it's already running - if xm list "$VM" >/dev/null 2>&1; then - return 1 - fi - - RET=1 - # To keep multiple hosts from trying to start a VM at the same - # time, lock VM creation at startup-time with a lock LV, since LV - # creation is atomic - if lvcreate -L 1K -n "lock_${LV}" xenvg >/dev/null 2>&1; then - # If we can disable the LV, then the VM isn't already running - # somewhere else - if lvchange -a n "$DISK" >/dev/null 2>&1; then - lvchange -a y "$DISK" >/dev/null 2>&1 - - [ "$VERBOSE" != no ] && log_daemon_msg "Starting sysvm $VM" - xm create "sysvms/$VM" >/dev/null - [ "$VERBOSE" != no ] && log_end_msg $? - RET=0 - fi - - # Regardless of whether we could get the lock or not, the - # lvchange -a n probably disabled the LV somewhere; be sure we - # clean up - lvchange -a y "$DISK" >/dev/null 2>&1 - - # Cleanup the lock, regardless of whether we started the LV - lvchange -a n "/dev/xenvg/lock_${LV}" >/dev/null 2>&1 - lvchange -a ey "/dev/xenvg/lock_${LV}" >/dev/null 2>&1 - lvremove -f "/dev/xenvg/lock_${LV}" >/dev/null 2>&1 - fi - - return $RET -} - do_startup() { gen_files - for vm in "${SYSVMS[@]}"; do - start_sysvm "$vm" - done - echo 1 >/proc/sys/net/ipv4/ip_forward for i in all default; do echo 1 >/proc/sys/net/ipv4/conf/$i/rp_filter