]> git.sur5r.net Git - bacula/bacula/commitdiff
More cleanup of bootstrap
authorKern Sibbald <kern@sibbald.com>
Tue, 14 Jul 2009 13:46:39 +0000 (13:46 +0000)
committerKern Sibbald <kern@sibbald.com>
Tue, 14 Jul 2009 13:46:39 +0000 (13:46 +0000)
git-svn-id: https://bacula.svn.sourceforge.net/svnroot/bacula/trunk@8983 91ce42f0-d328-0410-95d8-f526ca767f89

bacula/src/filed/job.c
bacula/src/stored/dircmd.c
bacula/src/stored/fd_cmds.c
bacula/src/stored/protos.h
bacula/technotes

index c91f2135fa02ca8407756c578244488c7cb9fc95..3c67b2ed0811cfe4406d862df951bdda2cee5cf1 100644 (file)
@@ -118,7 +118,7 @@ static struct s_cmds cmds[] = {
    {".status",      qstatus_cmd,   1},
    {"storage ",     storage_cmd,   0},
    {"verify",       verify_cmd,    0},
-   {"bootstrap",    bootstrap_cmd, 0},
+// {"bootstrap",    bootstrap_cmd, 0},
    {"RunBeforeNow", runbeforenow_cmd, 0},
    {"RunBeforeJob", runbefore_cmd, 0},
    {"RunAfterJob",  runafter_cmd,  0},
index 524b20762957b9715be98e8c98d7064f5bda1224..19374afddf6d3216d2ad169ed35396ed4a95da31 100644 (file)
@@ -61,6 +61,8 @@ extern bool init_done;
 static char derrmsg[]     = "3900 Invalid command\n";
 static char OKsetdebug[]  = "3000 OK setdebug=%d\n";
 static char invalid_cmd[] = "3997 Invalid command for a Director with Monitor directive enabled.\n";
+static char OK_bootstrap[]    = "3000 OK bootstrap\n";
+static char ERROR_bootstrap[] = "3904 Error bootstrap\n";
 
 /* Imported functions */
 extern void terminate_child();
@@ -935,6 +937,62 @@ static bool release_cmd(JCR *jcr)
    return true;
 }
 
+static pthread_mutex_t bsr_mutex = PTHREAD_MUTEX_INITIALIZER;
+static uint32_t bsr_uniq = 0;
+
+static bool get_bootstrap_file(JCR *jcr, BSOCK *sock)
+{
+   POOLMEM *fname = get_pool_memory(PM_FNAME);
+   FILE *bs;
+   bool ok = false;
+
+   if (jcr->RestoreBootstrap) {
+      unlink(jcr->RestoreBootstrap);
+      free_pool_memory(jcr->RestoreBootstrap);
+   }
+   P(bsr_mutex);
+   bsr_uniq++;
+   Mmsg(fname, "%s/%s.%s.%d.bootstrap", me->working_directory, me->hdr.name,
+      jcr->Job, bsr_uniq);
+   V(bsr_mutex);
+   Dmsg1(400, "bootstrap=%s\n", fname);
+   jcr->RestoreBootstrap = fname;
+   bs = fopen(fname, "a+b");           /* create file */
+   if (!bs) {
+      berrno be;
+      Jmsg(jcr, M_FATAL, 0, _("Could not create bootstrap file %s: ERR=%s\n"),
+         jcr->RestoreBootstrap, be.bstrerror());
+      goto bail_out;
+   }
+   Dmsg0(10, "=== Bootstrap file ===\n");
+   while (sock->recv() >= 0) {
+       Dmsg1(10, "%s", sock->msg);
+       fputs(sock->msg, bs);
+   }
+   fclose(bs);
+   Dmsg0(10, "=== end bootstrap file ===\n");
+   jcr->bsr = parse_bsr(jcr, jcr->RestoreBootstrap);
+   if (!jcr->bsr) {
+      Jmsg(jcr, M_FATAL, 0, _("Error parsing bootstrap file.\n"));
+      goto bail_out;
+   }
+   if (debug_level >= 10) {
+      dump_bsr(jcr->bsr, true);
+   }
+   /* If we got a bootstrap, we are reading, so create read volume list */
+   create_restore_volume_list(jcr);
+   ok = true;
+
+bail_out:
+   unlink(jcr->RestoreBootstrap);
+   free_pool_memory(jcr->RestoreBootstrap);
+   jcr->RestoreBootstrap = NULL;
+   if (!ok) {
+      sock->fsend(ERROR_bootstrap);
+      return false;
+   }
+   return sock->fsend(OK_bootstrap);
+}
 
 static bool bootstrap_cmd(JCR *jcr)
 {
index 88223497b662e1316c31969f43ae89982ac270aa..403957874b66fad432be8249201f1c8421b35060 100644 (file)
@@ -61,7 +61,6 @@ static bool append_end_session(JCR *jcr);
 static bool read_open_session(JCR *jcr);
 static bool read_data_cmd(JCR *jcr);
 static bool read_close_session(JCR *jcr);
-static bool bootstrap_cmd(JCR *jcr);
 
 /* Exported function */
 bool get_bootstrap_file(JCR *jcr, BSOCK *bs);
@@ -82,7 +81,6 @@ static struct s_cmds fd_cmds[] = {
    {"read open",    read_open_session},
    {"read data",    read_data_cmd},
    {"read close",   read_close_session},
-   {"bootstrap",    bootstrap_cmd},
    {NULL,           NULL}                  /* list terminator */
 };
 
@@ -96,8 +94,6 @@ static char OK_end[]          = "3000 OK end\n";
 static char OK_close[]        = "3000 OK close Status = %d\n";
 static char OK_open[]         = "3000 OK open ticket = %d\n";
 static char ERROR_append[]    = "3903 Error append data\n";
-static char OK_bootstrap[]    = "3000 OK bootstrap\n";
-static char ERROR_bootstrap[] = "3904 Error bootstrap\n";
 
 /* Information sent to the Director */
 static char Job_start[] = "3010 Job %s start\n";
@@ -341,69 +337,6 @@ static bool read_open_session(JCR *jcr)
    return true;
 }
 
-static bool bootstrap_cmd(JCR *jcr)
-{
-   return get_bootstrap_file(jcr, jcr->file_bsock);
-}
-
-static pthread_mutex_t bsr_mutex = PTHREAD_MUTEX_INITIALIZER;
-static uint32_t bsr_uniq = 0;
-
-bool get_bootstrap_file(JCR *jcr, BSOCK *sock)
-{
-   POOLMEM *fname = get_pool_memory(PM_FNAME);
-   FILE *bs;
-   bool ok = false;
-
-   if (jcr->RestoreBootstrap) {
-      unlink(jcr->RestoreBootstrap);
-      free_pool_memory(jcr->RestoreBootstrap);
-   }
-   P(bsr_mutex);
-   bsr_uniq++;
-   Mmsg(fname, "%s/%s.%s.%d.bootstrap", me->working_directory, me->hdr.name,
-      jcr->Job, bsr_uniq);
-   V(bsr_mutex);
-   Dmsg1(400, "bootstrap=%s\n", fname);
-   jcr->RestoreBootstrap = fname;
-   bs = fopen(fname, "a+b");           /* create file */
-   if (!bs) {
-      berrno be;
-      Jmsg(jcr, M_FATAL, 0, _("Could not create bootstrap file %s: ERR=%s\n"),
-         jcr->RestoreBootstrap, be.bstrerror());
-      goto bail_out;
-   }
-   Dmsg0(10, "=== Bootstrap file ===\n");
-   while (sock->recv() >= 0) {
-       Dmsg1(10, "%s", sock->msg);
-       fputs(sock->msg, bs);
-   }
-   fclose(bs);
-   Dmsg0(10, "=== end bootstrap file ===\n");
-   jcr->bsr = parse_bsr(jcr, jcr->RestoreBootstrap);
-   if (!jcr->bsr) {
-      Jmsg(jcr, M_FATAL, 0, _("Error parsing bootstrap file.\n"));
-      goto bail_out;
-   }
-   if (debug_level >= 10) {
-      dump_bsr(jcr->bsr, true);
-   }
-   /* If we got a bootstrap, we are reading, so create read volume list */
-   create_restore_volume_list(jcr);
-   ok = true;
-
-bail_out:
-   unlink(jcr->RestoreBootstrap);
-   free_pool_memory(jcr->RestoreBootstrap);
-   jcr->RestoreBootstrap = NULL;
-   if (!ok) {
-      sock->fsend(ERROR_bootstrap);
-      return false;
-   }
-   return sock->fsend(OK_bootstrap);
-}
-
-
 /*
  *   Read Close session command
  *      Close the read session
index b511bea0ccd9e81c8e173b10b9c469d974824d1e..db34f428e0c27c1ffaa0f745801d32719d8b670b 100644 (file)
@@ -139,7 +139,6 @@ void     *handle_connection_request(void *arg);
 
 /* From fd_cmds.c */
 void     run_job(JCR *jcr);
-bool     get_bootstrap_file(JCR *jcr, BSOCK *bsock);
 void     do_fd_commands(JCR *jcr);
 
 /* From job.c */
index 975ad18264c46a0fbf0cfd5611b5ae6376243198..37bad750f1bcaaac9bf564756a10d01e180def20 100644 (file)
@@ -2,6 +2,8 @@
           
 General:
 
+14Jul09
+kes  More cleanup of bootstrap
 13Jul09
 kes  Send bootstrap directly from DIR to SD
 kes  Create build scripts for Win64 somewhat equilavent to the Win32 ones.