Ignore:
Timestamp:
Jan 1, 2010, 7:07:46 PM (15 years ago)
Author:
broder
Message:

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.

Location:
trunk/packages/invirt-xen-config/debian
Files:
2 edited

Legend:

Unmodified
Added
Removed
  • trunk/packages/invirt-xen-config/debian/changelog

    r2825 r2829  
    11invirt-xen-config (0.0.27) unstable; urgency=low
    22
     3  [ Greg Brockman ]
    34  * Nuked the pinning of libxen3
    45
    5  -- Greg Brockman <gdb@mit.edu>  Fri, 01 Jan 2010 18:28:45 -0500
     6  [ Evan Broder ]
     7  * Don't try to start sysvms in the invirt-xen-config init script. The
     8    code has never been reliable.
     9
     10 -- Evan Broder <broder@mit.edu>  Fri, 01 Jan 2010 17:58:57 -0600
    611
    712invirt-xen-config (0.0.26) unstable; urgency=low
  • trunk/packages/invirt-xen-config/debian/invirt-xen-config.init

    r2087 r2829  
    1414DESC="Invirt Xen host"
    1515PARENTPACKAGE=xend
    16 SYSVM_FILES=($(run-parts --list /etc/xen/sysvms))
    17 SYSVMS=("${SYSVM_FILES[@]/#\/etc\/xen\/sysvms\/}")
    1816GEN_FILES=(/etc/xen/xend-config.sxp.invirt)
    1917
     
    2321. /lib/init/std-init.sh
    2422
    25 start_sysvm() {
    26     # Attempt to start a sysvm, but only if it's not running already
    27     # somewhere on the cluster
    28    
    29     VM="$1"
    30     LV="${VM}_hda"
    31     DISK="/dev/xenvg/$LV"
    32    
    33     # Don't bother trying to start the VM if it's already running
    34     if xm list "$VM" >/dev/null 2>&1; then
    35         return 1
    36     fi
    37    
    38     RET=1
    39     # To keep multiple hosts from trying to start a VM at the same
    40     # time, lock VM creation at startup-time with a lock LV, since LV
    41     # creation is atomic
    42     if lvcreate -L 1K -n "lock_${LV}" xenvg >/dev/null 2>&1; then
    43         # If we can disable the LV, then the VM isn't already running
    44         # somewhere else
    45         if lvchange -a n "$DISK" >/dev/null 2>&1; then
    46             lvchange -a y "$DISK" >/dev/null 2>&1
    47            
    48             [ "$VERBOSE" != no ] && log_daemon_msg "Starting sysvm $VM"
    49             xm create "sysvms/$VM" >/dev/null
    50             [ "$VERBOSE" != no ] && log_end_msg $?
    51             RET=0
    52         fi
    53        
    54         # Regardless of whether we could get the lock or not, the
    55         # lvchange -a n probably disabled the LV somewhere; be sure we
    56         # clean up
    57         lvchange -a y "$DISK" >/dev/null 2>&1
    58    
    59         # Cleanup the lock, regardless of whether we started the LV
    60         lvchange -a n "/dev/xenvg/lock_${LV}" >/dev/null 2>&1
    61         lvchange -a ey "/dev/xenvg/lock_${LV}" >/dev/null 2>&1
    62         lvremove -f "/dev/xenvg/lock_${LV}" >/dev/null 2>&1
    63     fi
    64    
    65     return $RET
    66 }
    67 
    6823do_startup() {
    6924    gen_files
    70    
    71     for vm in "${SYSVMS[@]}"; do
    72         start_sysvm "$vm"
    73     done
    7425   
    7526    echo 1 >/proc/sys/net/ipv4/ip_forward
Note: See TracChangeset for help on using the changeset viewer.