mirror of
git://sourceware.org/git/lvm2.git
synced 2025-01-02 01:18:26 +03:00
Tidy clvmd's SIGHUP handler so it doesn't do all that work.
This commit is contained in:
parent
66278a80b1
commit
30bda7761e
@ -9,6 +9,7 @@ Version 2.01.10 -
|
||||
Annotate, tidy and extend list.h.
|
||||
Alignment tidying.
|
||||
Make clvmd work around some "bugs" in gulm's node state notifications.
|
||||
Tidy clvmd's SIGHUP handler
|
||||
|
||||
Version 2.01.09 - 4th April 2005
|
||||
================================
|
||||
|
@ -40,6 +40,7 @@ struct cluster_ops {
|
||||
|
||||
void (*get_our_csid) (char *csid);
|
||||
void (*add_up_node) (char *csid);
|
||||
void (*reread_config) (void);
|
||||
void (*cluster_closedown) (void);
|
||||
|
||||
int (*sync_lock) (const char *resource, int mode, int flags, int *lockid);
|
||||
|
@ -136,12 +136,11 @@ static void badsig_handler(int sig)
|
||||
exit(0);
|
||||
}
|
||||
|
||||
static void sighup_handler(int sig)
|
||||
static void _reread_config(void)
|
||||
{
|
||||
DEBUGLOG("got SIGHUP\n");
|
||||
|
||||
/* Re-read CCS node list */
|
||||
get_all_cluster_nodes();
|
||||
/* Re-read CCS node list */
|
||||
DEBUGLOG("Re-reading CCS config\n");
|
||||
get_all_cluster_nodes();
|
||||
}
|
||||
|
||||
static int _init_cluster(void)
|
||||
@ -244,9 +243,6 @@ static int _init_cluster(void)
|
||||
signal(SIGINT, badsig_handler);
|
||||
signal(SIGTERM, badsig_handler);
|
||||
|
||||
/* Re-read the node list on SIGHUP */
|
||||
signal(SIGHUP, sighup_handler);
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
@ -986,6 +982,7 @@ static struct cluster_ops _cluster_gulm_ops = {
|
||||
.is_quorate = _is_quorate,
|
||||
.get_our_csid = _get_our_csid,
|
||||
.add_up_node = gulm_add_up_node,
|
||||
.reread_config = _reread_config,
|
||||
.cluster_closedown = _cluster_closedown,
|
||||
.sync_lock = _sync_lock,
|
||||
.sync_unlock = _sync_unlock,
|
||||
|
@ -90,6 +90,7 @@ static pthread_cond_t lvm_thread_cond;
|
||||
static pthread_mutex_t lvm_start_mutex;
|
||||
static struct list lvm_cmd_head;
|
||||
static volatile sig_atomic_t quit = 0;
|
||||
static volatile sig_atomic_t reread_config = 0;
|
||||
static int child_pipe[2];
|
||||
|
||||
/* Reasons the daemon failed initialisation */
|
||||
@ -101,6 +102,7 @@ static int child_pipe[2];
|
||||
|
||||
/* Prototypes for code further down */
|
||||
static void sigusr2_handler(int sig);
|
||||
static void sighup_handler(int sig);
|
||||
static void sigterm_handler(int sig);
|
||||
static void send_local_reply(struct local_client *client, int status,
|
||||
int clientid);
|
||||
@ -222,8 +224,10 @@ int main(int argc, char *argv[])
|
||||
|
||||
/* Set up signal handlers, USR1 is for cluster change notifications (in cman)
|
||||
USR2 causes child threads to exit.
|
||||
HUP causes gulm version to re-read nodes list from CCS.
|
||||
PIPE should be ignored */
|
||||
signal(SIGUSR2, sigusr2_handler);
|
||||
signal(SIGHUP, sighup_handler);
|
||||
signal(SIGPIPE, SIG_IGN);
|
||||
|
||||
/* Block SIGUSR2 in the main process */
|
||||
@ -514,7 +518,18 @@ static void main_loop(int local_sock, int cmd_timeout)
|
||||
FD_SET(thisfd->fd, &in);
|
||||
}
|
||||
|
||||
if ((select_status = select(FD_SETSIZE, &in, NULL, NULL, &tv)) > 0) {
|
||||
select_status = select(FD_SETSIZE, &in, NULL, NULL, &tv);
|
||||
|
||||
if (reread_config) {
|
||||
int saved_errno = errno;
|
||||
|
||||
reread_config = 0;
|
||||
if (clops->reread_config)
|
||||
clops->reread_config();
|
||||
errno = saved_errno;
|
||||
}
|
||||
|
||||
if (select_status > 0) {
|
||||
struct local_client *lastfd = NULL;
|
||||
char csid[MAX_CSID_LEN];
|
||||
char buf[max_cluster_message];
|
||||
@ -1820,6 +1835,12 @@ static void sigterm_handler(int sig)
|
||||
return;
|
||||
}
|
||||
|
||||
static void sighup_handler(int sig)
|
||||
{
|
||||
DEBUGLOG("got SIGHUP\n");
|
||||
reread_config = 1;
|
||||
}
|
||||
|
||||
int sync_lock(const char *resource, int mode, int flags, int *lockid)
|
||||
{
|
||||
return clops->sync_lock(resource, mode, flags, lockid);
|
||||
|
Loading…
Reference in New Issue
Block a user