Rev 753: block alarm signals during critical sections of vacuum in
http://samba.org/~tridge/ctdb
tridge at samba.org
tridge at samba.org
Wed Jan 9 22:43:15 GMT 2008
------------------------------------------------------------
revno: 753
revision-id:tridge at samba.org-20080109224314-jng6hpo4lbo9y8ls
parent: tridge at samba.org-20080109224244-5g9za2b00oezj7w8
committer: Andrew Tridgell <tridge at samba.org>
branch nick: tridge.stable
timestamp: Thu 2008-01-10 09:43:14 +1100
message:
block alarm signals during critical sections of vacuum
modified:
common/ctdb_util.c ctdb_util.c-20061128065342-to93h6eejj5kon81-3
include/ctdb_private.h ctdb_private.h-20061117234101-o3qt14umlg9en8z0-13
server/ctdbd.c ctdbd.c-20070411085044-dqmhr6mfeexnyt4m-1
tools/ctdb_vacuum.c ctdb_vacuum.c-20080108053634-3zs2bdddzs4r1e1t-1
=== modified file 'common/ctdb_util.c'
--- a/common/ctdb_util.c 2007-09-21 02:24:02 +0000
+++ b/common/ctdb_util.c 2008-01-09 22:43:14 +0000
@@ -22,6 +22,7 @@
#include "lib/tdb/include/tdb.h"
#include "system/network.h"
#include "system/filesys.h"
+#include "system/wait.h"
#include "../include/ctdb_private.h"
int LogLevel;
@@ -340,3 +341,21 @@
{
return ctdb_same_ip(ip1, ip2) && ip1->sin_port == ip2->sin_port;
}
+
+
+
+void ctdb_block_signal(int signum)
+{
+ sigset_t set;
+ sigemptyset(&set);
+ sigaddset(&set,signum);
+ sigprocmask(SIG_BLOCK,&set,NULL);
+}
+
+void ctdb_unblock_signal(int signum)
+{
+ sigset_t set;
+ sigemptyset(&set);
+ sigaddset(&set,signum);
+ sigprocmask(SIG_UNBLOCK,&set,NULL);
+}
=== modified file 'include/ctdb_private.h'
--- a/include/ctdb_private.h 2008-01-08 10:28:42 +0000
+++ b/include/ctdb_private.h 2008-01-09 22:43:14 +0000
@@ -1209,5 +1209,7 @@
int32_t ctdb_control_delete_record(struct ctdb_context *ctdb, TDB_DATA indata);
+void ctdb_block_signal(int signum);
+void ctdb_unblock_signal(int signum);
#endif
=== modified file 'server/ctdbd.c'
--- a/server/ctdbd.c 2007-11-29 21:44:34 +0000
+++ b/server/ctdbd.c 2008-01-09 22:43:14 +0000
@@ -26,18 +26,6 @@
#include "cmdline.h"
#include "../include/ctdb_private.h"
-static void block_signal(int signum)
-{
- struct sigaction act;
-
- memset(&act, 0, sizeof(act));
-
- act.sa_handler = SIG_IGN;
- sigemptyset(&act.sa_mask);
- sigaddset(&act.sa_mask, signum);
- sigaction(signum, &act, NULL);
-}
-
static struct {
const char *nlist;
const char *transport;
@@ -149,7 +137,7 @@
exit(1);
}
- block_signal(SIGPIPE);
+ ctdb_block_signal(SIGPIPE);
ev = event_context_init(NULL);
=== modified file 'tools/ctdb_vacuum.c'
--- a/tools/ctdb_vacuum.c 2008-01-08 21:28:18 +0000
+++ b/tools/ctdb_vacuum.c 2008-01-09 22:43:14 +0000
@@ -208,7 +208,9 @@
return 0;
}
+ ctdb_block_signal(SIGALRM);
tdb_delete(ctdb_db->ltdb->tdb, key);
+ ctdb_unblock_signal(SIGALRM);
tdb_chainunlock(ctdb_db->ltdb->tdb, key);
free(data.dptr);
More information about the samba-cvs
mailing list