]> git-server-git.apps.pok.os.sepia.ceph.com Git - ceph.git/commitdiff
init-ceph: stop returns before daemons are dead 3215/head
authorLoic Dachary <ldachary@redhat.com>
Fri, 19 Dec 2014 14:54:33 +0000 (15:54 +0100)
committerLoic Dachary <ldachary@redhat.com>
Wed, 7 Jan 2015 09:52:20 +0000 (10:52 +0100)
The existence of the pidfile must be checked outside of the loop to send
a signal to the daemon. Otherwise the daemon will remove the pidfile and
stop can return before the process is dead because it only checks
/proc/$pid if the pidfile exists.

http://tracker.ceph.com/issues/10389 Fixes: #10389

Signed-off-by: Loic Dachary <ldachary@redhat.com>
src/init-ceph.in

index 4bfbf2878ad0f16f2a75dcd51084dbaf00204030..cb340f961deee76fa5c6700a94d8e137652d00fb 100644 (file)
@@ -88,8 +88,7 @@ stop_daemon() {
     action=$5
     [ -z "$action" ] && action="Stopping"
     echo -n "$action Ceph $name on $host..."
-    do_cmd "while [ 1 ]; do
-       [ -e $pidfile ] || break
+    do_cmd "if [ -e $pidfile ] ; then 
        pid=\`cat $pidfile\`
        while [ -e /proc/\$pid ] && grep -q $daemon /proc/\$pid/cmdline ; do
            cmd=\"kill $signal \$pid\"
@@ -98,8 +97,7 @@ stop_daemon() {
            sleep 1
            continue
        done
-       break
-    done"
+    fi"
     echo done
 }