]> xenbits.xensource.com Git - libvirt.git/commitdiff
libvirt-guests: Remove LISTFILE if it's empty when stopping service
authorOsier Yang <jyang@redhat.com>
Tue, 15 May 2012 08:22:28 +0000 (16:22 +0800)
committerOsier Yang <jyang@redhat.com>
Tue, 15 May 2012 08:22:28 +0000 (16:22 +0800)
$LISTFILE is created even no domain is running, and the empty
$LISTFILE could cause improper service status.

    stopped ,with saved guests

Which is not right, as there is no domain was saved.

tools/libvirt-guests.init.sh

index aafb4d48d03d6f73648043bcdcaf83d5cb2c151b..d5d42d6fd1e11ce75816ee3ac82073e0925c7c0f 100644 (file)
@@ -461,26 +461,30 @@ stop() {
     done
     set +f
 
-    while read uri list; do
-        if "$suspending"; then
-            eval_gettext "Suspending guests on \$uri URI..."; echo
-        else
-            eval_gettext "Shutting down guests on \$uri URI..."; echo
-        fi
+    if [ -s "$LISTFILE" ]; then
+        while read uri list; do
+            if "$suspending"; then
+                eval_gettext "Suspending guests on \$uri URI..."; echo
+            else
+                eval_gettext "Shutting down guests on \$uri URI..."; echo
+            fi
 
-        if [ "$PARALLEL_SHUTDOWN" -gt 1 ] &&
-           ! "$suspending"; then
-            shutdown_guests_parallel "$uri" "$list"
-        else
-            for guest in $list; do
-                if "$suspending"; then
-                    suspend_guest "$uri" "$guest"
-                else
-                    shutdown_guest "$uri" "$guest"
-                fi
-            done
-        fi
-    done <"$LISTFILE"
+            if [ "$PARALLEL_SHUTDOWN" -gt 1 ] &&
+               ! "$suspending"; then
+                shutdown_guests_parallel "$uri" "$list"
+            else
+                for guest in $list; do
+                    if "$suspending"; then
+                        suspend_guest "$uri" "$guest"
+                    else
+                        shutdown_guest "$uri" "$guest"
+                    fi
+                done
+            fi
+        done <"$LISTFILE"
+    else
+        rm -f "$LISTFILE"
+    fi
 
     rm -f "$VAR_SUBSYS_LIBVIRT_GUESTS"
 }