------------------------------------------------------------
revno: 301
revision-id: [EMAIL PROTECTED]
parent: [EMAIL PROTECTED]
committer: Andrew Tridgell <[EMAIL PROTECTED]>
branch nick: tridge
timestamp: Tue 2007-05-15 09:44:33 +1000
message:
  added a -i switch to run ctdbd without forking
modified:
  common/ctdb_daemon.c           ctdb_daemon.c-20070409200331-3el1kqgdb9m4ib0g-1
  direct/ctdbd.c                 ctdbd.c-20070411085044-dqmhr6mfeexnyt4m-1
  include/ctdb.h                 ctdb.h-20061117234101-o3qt14umlg9en8z0-11
=== modified file 'common/ctdb_daemon.c'
--- a/common/ctdb_daemon.c      2007-05-12 23:20:16 +0000
+++ b/common/ctdb_daemon.c      2007-05-14 23:44:33 +0000
@@ -62,7 +62,10 @@
        }
 
        /* start the transport running */
-       ctdb->methods->start(ctdb);
+       if (ctdb->methods->start(ctdb) != 0) {
+               DEBUG(0,("transport failed to start!\n"));
+               ctdb_fatal(ctdb, "transport failed to start");
+       }
 
        /* go into a wait loop to allow other nodes to complete */
        event_loop_wait(ctdb->ev);
@@ -603,11 +606,14 @@
                return -1;
        }
 
+#if 0
+       /* AIX doesn't like this :( */
        if (fchown(ctdb->daemon.sd, geteuid(), getegid()) != 0 ||
            fchmod(ctdb->daemon.sd, 0700) != 0) {
                DEBUG(0,("Unable to secure ctdb socket '%s', 
ctdb->daemon.name\n"));
                goto failed;
        }
+#endif
 
        set_non_blocking(ctdb->daemon.sd);
 
@@ -701,7 +707,7 @@
 /*
   start the protocol going as a daemon
 */
-int ctdb_start_daemon(struct ctdb_context *ctdb)
+int ctdb_start_daemon(struct ctdb_context *ctdb, bool do_fork)
 {
        int res;
        struct fd_event *fde;
@@ -717,13 +723,15 @@
                exit(10);
        }
 
-       if (fork()) {
+       if (do_fork && fork()) {
                return 0;
        }
 
        tdb_reopen_all(False);
 
-       setsid();
+       if (do_fork) {
+               setsid();
+       }
        block_signal(SIGPIPE);
        block_signal(SIGCHLD);
 

=== modified file 'direct/ctdbd.c'
--- a/direct/ctdbd.c    2007-04-30 13:31:40 +0000
+++ b/direct/ctdbd.c    2007-05-14 23:44:33 +0000
@@ -45,10 +45,12 @@
 int main(int argc, const char *argv[])
 {
        struct ctdb_context *ctdb;
+       int interactive = 0;
 
        struct poptOption popt_options[] = {
                POPT_AUTOHELP
                POPT_CTDB_CMDLINE
+               { "interactive", 'i', POPT_ARG_NONE, &interactive, 0, "don't 
fork", NULL },
                POPT_TABLEEND
        };
        int opt;
@@ -90,5 +92,5 @@
        }
 
        /* start the protocol running (as a child) */
-       return ctdb_start_daemon(ctdb);
+       return ctdb_start_daemon(ctdb, interactive?False:True);
 }

=== modified file 'include/ctdb.h'
--- a/include/ctdb.h    2007-05-12 05:15:27 +0000
+++ b/include/ctdb.h    2007-05-14 23:44:33 +0000
@@ -112,7 +112,7 @@
   start the ctdb protocol
 */
 int ctdb_start(struct ctdb_context *ctdb);
-int ctdb_start_daemon(struct ctdb_context *ctdb);
+int ctdb_start_daemon(struct ctdb_context *ctdb, bool do_fork);
 
 /*
   attach to a ctdb database

Reply via email to