simplify multipath signal handlers
authorBenjamin Marzinski <bmarzins@redhat.com>
Wed, 8 May 2013 18:36:04 +0000 (13:36 -0500)
committerChristophe Varoqui <christophe.varoqui@opensvc.com>
Mon, 13 May 2013 18:02:15 +0000 (20:02 +0200)
commit5ee9f716549d913aeb9800041f78ee9c6a50d860
tree9bfa7b4dc75fbf26b959996263ac1f7ac540b553
parente7d716fabe85acaaa61ec7065a103ac3a2f16cc2
simplify multipath signal handlers

This patch changes how multipath's signal handlers work.  Instead of
having sighup and sigusr1 acquire locks and call functions directly,
they now both simply set atomic variables.  These two signals are
blocked in child(), and all other threads inherit this sigmask. The
only place in all the multipath code that doesn't block these signals
is now the ppoll() call by the uxlsnr thread.  When it is interrupted
by a signal, the uxlsnr thread does the actual processing work.

Instead of sigend using mutex locks and condition variables to tell
the child() function to exit, it now uses a signal_handler safe
semaphore that child() waits on and exit_daemon() increments.

This patch also switches all the sigprocmask() calls to
pthread_sigmask()

Signed-off-by: Benjamin Marzinski <bmarzins@redhat.com>
libmultipath/file.c
libmultipath/lock.c
libmultipath/lock.h
libmultipath/log_pthread.c
libmultipath/waiter.c
multipathd/cli_handlers.c
multipathd/main.c
multipathd/main.h
multipathd/uxlsnr.c
multipathd/uxlsnr.h