Author: pjd
Date: Thu Oct  7 18:19:02 2010
New Revision: 213530
URL: http://svn.freebsd.org/changeset/base/213530

Log:
  Start the guard thread first, so we can handle signals from the very begining.
  
  Reported by:  Mikolaj Golub <[email protected]>
  MFC after:    1 week

Modified:
  head/sbin/hastd/primary.c

Modified: head/sbin/hastd/primary.c
==============================================================================
--- head/sbin/hastd/primary.c   Thu Oct  7 18:16:22 2010        (r213529)
+++ head/sbin/hastd/primary.c   Thu Oct  7 18:19:02 2010        (r213530)
@@ -791,6 +791,12 @@ hastd_primary(struct hast_resource *res)
        init_ggate(res);
        init_environment(res);
        /*
+        * Create the guard thread first, so we can handle signals from the
+        * very begining.
+        */
+       error = pthread_create(&td, NULL, guard_thread, res);
+       assert(error == 0);
+       /*
         * Create the control thread before sending any event to the parent,
         * as we can deadlock when parent sends control request to worker,
         * but worker has no control thread started yet, so parent waits.
@@ -812,9 +818,7 @@ hastd_primary(struct hast_resource *res)
        assert(error == 0);
        error = pthread_create(&td, NULL, ggate_send_thread, res);
        assert(error == 0);
-       error = pthread_create(&td, NULL, sync_thread, res);
-       assert(error == 0);
-       (void)guard_thread(res);
+       (void)sync_thread(res);
 }
 
 static void
_______________________________________________
[email protected] mailing list
http://lists.freebsd.org/mailman/listinfo/svn-src-head
To unsubscribe, send any mail to "[email protected]"

Reply via email to