summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorSage Weil <sage@inktank.com>2013-07-24 13:56:10 -0700
committerSage Weil <sage@inktank.com>2013-07-24 13:56:17 -0700
commitd7df620b5723d6d7d41338be330ca293f62aa23c (patch)
tree4ae6050c505512ad8f5bd01c7106af05e7fd0ee6
parent26d0f04b75c47ea799f4b7a204bf0ac36efc384b (diff)
downloadceph-d7df620b5723d6d7d41338be330ca293f62aa23c.tar.gz
global/signal_handler: poll on the control pipe, too
We also need to poll the control fd/pipe so that we restart the poll loop when new signal handlers are added. This was broken by commit 8e4a78f1. Fixes: #5742 Signed-off-by: Sage Weil <sage@inktank.com> Reviewed-by: Yehuda Sadeh <yehuda@inktank.com>
-rw-r--r--src/global/signal_handler.cc4
1 files changed, 4 insertions, 0 deletions
diff --git a/src/global/signal_handler.cc b/src/global/signal_handler.cc
index d403637002b..ce604fe1e5d 100644
--- a/src/global/signal_handler.cc
+++ b/src/global/signal_handler.cc
@@ -195,6 +195,10 @@ struct SignalHandler : public Thread {
lock.Lock();
int num_fds = 0;
+ fds[num_fds].fd = pipefd[0];
+ fds[num_fds].events = POLLIN | POLLOUT | POLLERR;
+ fds[num_fds].revents = 0;
+ ++num_fds;
for (unsigned i=0; i<32; i++) {
if (handlers[i]) {
fds[num_fds].fd = handlers[i]->pipefd[0];