Don't try to start sysvms in the invirt-xen-config init script.
authorEvan Broder <broder@mit.edu>
Sat, 2 Jan 2010 00:07:46 +0000 (19:07 -0500)
committerEvan Broder <broder@mit.edu>
Sat, 2 Jan 2010 00:07:46 +0000 (19:07 -0500)
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

debian/changelog
debian/invirt-xen-config.init

index a6157cf..ba03a99 100644 (file)
@@ -1,8 +1,13 @@
 invirt-xen-config (0.0.27) unstable; urgency=low
 
+  [ Greg Brockman ]
   * Nuked the pinning of libxen3
 
- -- Greg Brockman <gdb@mit.edu>  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 <broder@mit.edu>  Fri, 01 Jan 2010 17:58:57 -0600
 
 invirt-xen-config (0.0.26) unstable; urgency=low
 
index a9fcd30..8b3b226 100755 (executable)
@@ -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