[NEW PATCH] BZ#694026 use libvirt's upstart service (via gerrit-bot)

Dan Kenigsberg danken at redhat.com
Mon Jul 25 08:29:12 UTC 2011


New patch submitted by Dan Kenigsberg (danken at redhat.com)

You can review this change at: http://gerrit.usersys.redhat.com/675

commit 9c897dedb4184e671de58b0f9683c2717ec986c9
Author: Dan Kenigsberg <danken at redhat.com>
Date:   Sun Jul 24 10:04:17 2011 +0300

    BZ#694026 use libvirt's upstart service
    
    Unlike the default System V init script, the upstart service would try
    to restart libvirtd daemon in case the latter crashes.
    
    v8
    - use initctl restart properly
    - shutdown conflicting services (libvirtd sysv included) before
      configuration
    v9
    - do not fail `initctl restart` if libvirtd is not already running
    v10
    - make rpm removal quite
    
    Change-Id: I0ea7b64a710b6e2c48fb96da82ebea64fd0482a4

diff --git a/vdsm.spec.in b/vdsm.spec.in
index f805602..f4da4a5 100644
--- a/vdsm.spec.in
+++ b/vdsm.spec.in
@@ -180,6 +180,15 @@ _EOF
         if selinuxenabled; then
             setsebool virt_use_nfs off
         fi
+
+
+        if /sbin/initctl status libvirtd >/dev/null 2>/dev/null ; then
+            /sbin/initctl stop libvirtd  >/dev/null 2>/dev/null
+            rm -f /etc/init/libvirtd.conf
+
+            /sbin/chkconfig libvirtd on
+            /sbin/service libvirtd start >/dev/null
+        fi
 fi
 
 %postun
diff --git a/vdsm/vdsmd b/vdsm/vdsmd
index fabb11f..0591cb2 100755
--- a/vdsm/vdsmd
+++ b/vdsm/vdsmd
@@ -30,8 +30,8 @@ RESPAWNPIDFILE=@P_VDSM_RUN@/respawn.pid
 CORE_DUMP_PATH=/var/log/core/core.%p.%t.dump
 DOM_METADATA_BACKUP_DIR=/var/log/vdsm/backup
 CORE_PATTERN=/proc/sys/kernel/core_pattern
-NEEDED_SERVICES="iscsid multipathd libvirtd"
-CONFLICTING_SERVICES="libvirt-guests"
+NEEDED_SERVICES="iscsid multipathd"
+CONFLICTING_SERVICES="libvirt-guests libvirtd"
 # TODO: Remove cpu cgroup disabling when BZ#623712 is resolved (kernel on
 # massively multicore platforms failing to scale with cgroups turned on)
 CONFLICTING_SERVICES="cgconfig $CONFLICTING_SERVICES"
@@ -328,7 +328,7 @@ virt_use_nfs=1
 _EOF
     /usr/sbin/setsebool virt_use_nfs on
 
-    service libvirtd condrestart
+    /sbin/initctl restart libvirtd 2>/dev/null || :
 }
 
 RETVAL=0
@@ -347,10 +347,37 @@ reconfigure() {
     configure_libvirt $args
 }
 
+start_libvirtd() {
+    local packaged installed target
+    local startout
+
+    packaged=`/bin/rpm -ql libvirt | /bin/grep libvirtd.upstart | \
+                 /usr/bin/tail -1`
+    target=/etc/init/libvirtd.conf
+    installed=`/bin/readlink -f "$target"`
+
+    if [[ "$packaged" != "$installed" ]];
+    then
+        /bin/ln -sf "$packaged" "$target" || return 1
+        /sbin/initctl reload-configuration
+    fi
+
+    startout=`/sbin/initctl start libvirtd 2>&1`
+    if [[ "$?" -eq 0 || "$startout" =~ .*already\ running.* ]];
+    then
+        return 0
+    else
+        echo "$startout" >&2
+        return 1
+    fi
+}
+
 start() {
     local ret_val
     python @P_VDSM@/hooks.pyc before_vdsm_start
 
+    shutdown_conflicting_srv
+
     reconfigure noforce
     ret_val=$?
     if [ $ret_val -ne 0 ]
@@ -359,7 +386,7 @@ start() {
         return $ret_val
     fi
 
-    start_needed_srv
+    start_needed_srv && start_libvirtd
     ret_val=$?
     if [ $ret_val -ne 0 ]
     then
@@ -367,7 +394,6 @@ start() {
        return $ret_val
     fi
 
-    shutdown_conflicting_srv
     @P_VDSM@/vdsm-restore-net-config
     load_needed_modules
     mk_data_center




More information about the vdsm-patches mailing list