From: <ke...@us...> - 2007-10-19 11:47:54
|
Revision: 5771 http://bacula.svn.sourceforge.net/bacula/?rev=5771&view=rev Author: kerns Date: 2007-10-19 04:47:58 -0700 (Fri, 19 Oct 2007) Log Message: ----------- kes Set default debug_level to zero. This corrects bugs #991 and #993. kes Fix a crash in bat when it cannot connect to the Director for example if the Director is not running. Modified Paths: -------------- branches/Branch-2.2/bacula/src/lib/message.c branches/Branch-2.2/bacula/technotes-2.1 Added Paths: ----------- branches/Branch-2.2/bacula/patches/2.2.5-deamon.patch Added: branches/Branch-2.2/bacula/patches/2.2.5-deamon.patch =================================================================== --- branches/Branch-2.2/bacula/patches/2.2.5-deamon.patch (rev 0) +++ branches/Branch-2.2/bacula/patches/2.2.5-deamon.patch 2007-10-19 11:47:58 UTC (rev 5771) @@ -0,0 +1,40 @@ + + This patch fixes the default behavior of a non-DEVELOPER version of Bacula + to close STDIN, STDOUT, and STDERR so that an ssh that starts bacula + will not hang. It also fixes a crash in bat when bat is executed and + cannot connect to the Director (e.g. it is not running). + This patch fixes bugs #991 and #993. + + Apply this fix to Bacula version 2.2.5 with: + + cd <bacula-source> + patch -p0 <2.2.5-daemon.patch + ./configure (your options) + make + ... + make install + + +Index: src/lib/message.c +=================================================================== +--- src/lib/message.c (revision 5744) ++++ src/lib/message.c (working copy) +@@ -52,7 +52,8 @@ + */ + const char *working_directory = NULL; /* working directory path stored here */ + int verbose = 0; /* increase User messages */ +-int debug_level = 1; /* debug level */ ++/* Keep debug level set to zero by default */ ++int debug_level = 0; /* debug level */ + time_t daemon_start_time = 0; /* Daemon start time */ + const char *version = VERSION " (" BDATE ")"; + char my_name[30]; /* daemon name is stored here */ +@@ -1338,7 +1339,7 @@ + jcr = get_jcr_from_tsd(); + } + /* If no jcr or dequeuing send to daemon to avoid recursion */ +- if (!jcr || jcr->dequeuing) { ++ if ((jcr && !jcr->msg_queue) || !jcr || jcr->dequeuing) { + /* jcr==NULL => daemon message, safe to send now */ + Jmsg(jcr, item->type, item->mtime, "%s", item->msg); + free(item); Modified: branches/Branch-2.2/bacula/src/lib/message.c =================================================================== --- branches/Branch-2.2/bacula/src/lib/message.c 2007-10-19 10:13:13 UTC (rev 5770) +++ branches/Branch-2.2/bacula/src/lib/message.c 2007-10-19 11:47:58 UTC (rev 5771) @@ -52,7 +52,8 @@ */ const char *working_directory = NULL; /* working directory path stored here */ int verbose = 0; /* increase User messages */ -int debug_level = 1; /* debug level */ +/* Keep debug level set to zero by default */ +int debug_level = 0; /* debug level */ time_t daemon_start_time = 0; /* Daemon start time */ const char *version = VERSION " (" BDATE ")"; char my_name[30]; /* daemon name is stored here */ @@ -1338,7 +1339,7 @@ jcr = get_jcr_from_tsd(); } /* If no jcr or dequeuing send to daemon to avoid recursion */ - if (!jcr || jcr->dequeuing) { + if ((jcr && !jcr->msg_queue) || !jcr || jcr->dequeuing) { /* jcr==NULL => daemon message, safe to send now */ Jmsg(jcr, item->type, item->mtime, "%s", item->msg); free(item); Modified: branches/Branch-2.2/bacula/technotes-2.1 =================================================================== --- branches/Branch-2.2/bacula/technotes-2.1 2007-10-19 10:13:13 UTC (rev 5770) +++ branches/Branch-2.2/bacula/technotes-2.1 2007-10-19 11:47:58 UTC (rev 5771) @@ -1,6 +1,10 @@ Technical notes on version 2.2 General: +19Oct07 +kes Set default debug_level to zero. This corrects bugs #991 and #993. +kes Fix a crash in bat when it cannot connect to the Director for example + if the Director is not running. 16Oct07 kes Activate Close button on tray-monitor window. This fixes bug #986. This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <ke...@us...> - 2007-10-22 10:31:32
|
Revision: 5778 http://bacula.svn.sourceforge.net/bacula/?rev=5778&view=rev Author: kerns Date: 2007-10-22 03:31:08 -0700 (Mon, 22 Oct 2007) Log Message: ----------- kes Apply 2.2.5-postgresql-errors.patch kes Remove unneeded File table index on JobId, which is already present as the first index of another multi-index. Modified Paths: -------------- branches/Branch-2.2/bacula/src/cats/cats.h branches/Branch-2.2/bacula/src/cats/make_mysql_tables.in branches/Branch-2.2/bacula/technotes-2.1 Modified: branches/Branch-2.2/bacula/src/cats/cats.h =================================================================== --- branches/Branch-2.2/bacula/src/cats/cats.h 2007-10-22 10:21:26 UTC (rev 5777) +++ branches/Branch-2.2/bacula/src/cats/cats.h 2007-10-22 10:31:08 UTC (rev 5778) @@ -498,7 +498,7 @@ #define sql_fetch_row(x) my_postgresql_fetch_row(x) #define sql_query(x, y) my_postgresql_query((x), (y)) #define sql_close(x) PQfinish((x)->db) -#define sql_strerror(x) PQresultErrorMessage((x)->result) +#define sql_strerror(x) PQerrorMessage((x)->db) #define sql_num_rows(x) ((unsigned) PQntuples((x)->result)) #define sql_data_seek(x, i) my_postgresql_data_seek((x), (i)) #define sql_affected_rows(x) ((unsigned) atoi(PQcmdTuples((x)->result))) Modified: branches/Branch-2.2/bacula/src/cats/make_mysql_tables.in =================================================================== --- branches/Branch-2.2/bacula/src/cats/make_mysql_tables.in 2007-10-22 10:21:26 UTC (rev 5777) +++ branches/Branch-2.2/bacula/src/cats/make_mysql_tables.in 2007-10-22 10:31:08 UTC (rev 5778) @@ -38,7 +38,6 @@ LStat TINYBLOB NOT NULL, MD5 TINYBLOB, PRIMARY KEY(FileId), - INDEX (JobId), INDEX (JobId, PathId, FilenameId) ); @@ -50,7 +49,6 @@ # INDEX (PathId), # INDEX (FilenameId), # INDEX (FilenameId, PathId) -# INDEX (JobId), # CREATE TABLE MediaType ( Modified: branches/Branch-2.2/bacula/technotes-2.1 =================================================================== --- branches/Branch-2.2/bacula/technotes-2.1 2007-10-22 10:21:26 UTC (rev 5777) +++ branches/Branch-2.2/bacula/technotes-2.1 2007-10-22 10:31:08 UTC (rev 5778) @@ -1,6 +1,10 @@ Technical notes on version 2.2 General: +22Oct07 +kes Apply 2.2.5-postgresql-errors.patch +kes Remove unneeded File table index on JobId, which is already + present as the first index of another multi-index. 19Oct07 kes Set default debug_level to zero. This corrects bugs #991 and #993. kes Fix a crash in bat when it cannot connect to the Director for example This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <ke...@us...> - 2007-10-22 21:47:53
|
Revision: 5779 http://bacula.svn.sourceforge.net/bacula/?rev=5779&view=rev Author: kerns Date: 2007-10-22 14:47:58 -0700 (Mon, 22 Oct 2007) Log Message: ----------- kes Add a security warning to src/cats/make_catalog_backup.in indicating that passing the password via the command line (arg 3) is insecure. This responds to bug #990 (it doesn't fix it). Modified Paths: -------------- branches/Branch-2.2/bacula/src/cats/make_catalog_backup.in branches/Branch-2.2/bacula/technotes-2.1 Modified: branches/Branch-2.2/bacula/src/cats/make_catalog_backup.in =================================================================== --- branches/Branch-2.2/bacula/src/cats/make_catalog_backup.in 2007-10-22 10:31:08 UTC (rev 5778) +++ branches/Branch-2.2/bacula/src/cats/make_catalog_backup.in 2007-10-22 21:47:58 UTC (rev 5779) @@ -8,7 +8,11 @@ # $2 is the user name with which to access the database # (default = bacula). # $3 is the password with which to access the database or "" if no password -# (default "") +# (default ""). WARNING!!! Passing the password via the command line is +# insecure and should not be used since any user can display the command +# line arguments and the environment using ps. Please consult your +# MySQL or PostgreSQL manual for secure methods of specifying the +# password. # $4 is the host on which the database is located # (default "") # @@ -31,7 +35,7 @@ else MYSQLHOST="" fi - ${BINDIR}/mysqldump -u $2$MYSQLPASSWORD$MYSQLHOST -f --opt $1 >$1.sql + ${BINDIR}/mysqldump -u ${2}${MYSQLPASSWORD}${MYSQLHOST} -f --opt $1 >$1.sql else if test xpostgresql = x@DB_TYPE@ ; then if test $# -gt 2; then Modified: branches/Branch-2.2/bacula/technotes-2.1 =================================================================== --- branches/Branch-2.2/bacula/technotes-2.1 2007-10-22 10:31:08 UTC (rev 5778) +++ branches/Branch-2.2/bacula/technotes-2.1 2007-10-22 21:47:58 UTC (rev 5779) @@ -2,6 +2,9 @@ General: 22Oct07 +kes Add a security warning to src/cats/make_catalog_backup.in indicating + that passing the password via the command line (arg 3) is insecure. + This responds to bug #990 (it doesn't fix it). kes Apply 2.2.5-postgresql-errors.patch kes Remove unneeded File table index on JobId, which is already present as the first index of another multi-index. This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <ri...@us...> - 2007-10-24 18:37:00
|
Revision: 5798 http://bacula.svn.sourceforge.net/bacula/?rev=5798&view=rev Author: ricozz Date: 2007-10-24 11:37:02 -0700 (Wed, 24 Oct 2007) Log Message: ----------- ebl Use qmake-qt4 instead of qmake when available (debian system) Modified Paths: -------------- branches/Branch-2.2/bacula/autoconf/configure.in branches/Branch-2.2/bacula/technotes-2.1 Modified: branches/Branch-2.2/bacula/autoconf/configure.in =================================================================== --- branches/Branch-2.2/bacula/autoconf/configure.in 2007-10-24 18:34:33 UTC (rev 5797) +++ branches/Branch-2.2/bacula/autoconf/configure.in 2007-10-24 18:37:02 UTC (rev 5798) @@ -74,6 +74,8 @@ AC_PATH_PROG(DVDRWMEDIAINFO, dvd+rw-mediainfo, dvd+rw-mediainfo) AC_PATH_PROG(DVDRWFORMAT, dvd+rw-format, dvd+rw-format) AC_PATH_PROG(PKGCONFIG, pkg-config, pkg-config) +AC_PATH_PROG(QMAKE, qmake, none) +AC_PATH_PROG(QMAKEQT4, qmake-qt4, none) AC_ARG_VAR(WXCONFIG, [wx-config command. On some systems, you must set it to wx-config-2.6 to use wxWidgets 2.6.]) if test "x$WXCONFIG" = x; then WXCONFIG=wx-config @@ -2230,10 +2232,23 @@ ) if test "${support_bat}" = "yes" ; then + if test "x$QMAKE" = "xnone" && test "x$QMAKEQT4" = "xnone"; then + echo "Could not find qmake or qmake-qt4 in $PATH. Check your Qt installation" + exit 1 + fi + + QMAKEBIN="qmake" + + if test "x$QMAKEQT4" != "xnone"; then + QMAKEBIN=qmake-qt4 + fi + + + cd src/qt-console chmod 755 install_conf_file build-depkgs-qt-console - echo "Creating bat Makefile" - qmake + echo "Creating bat Makefile" + $QMAKEBIN cd ${BUILD_DIR} fi Modified: branches/Branch-2.2/bacula/technotes-2.1 =================================================================== --- branches/Branch-2.2/bacula/technotes-2.1 2007-10-24 18:34:33 UTC (rev 5797) +++ branches/Branch-2.2/bacula/technotes-2.1 2007-10-24 18:37:02 UTC (rev 5798) @@ -1,6 +1,8 @@ Technical notes on version 2.2 General: +24Oct07 +ebl Use qmake-qt4 instead of qmake when available (debian system). 22Oct07 kes Add a security warning to src/cats/make_catalog_backup.in indicating that passing the password via the command line (arg 3) is insecure. This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <ri...@us...> - 2007-10-26 17:19:36
|
Revision: 5814 http://bacula.svn.sourceforge.net/bacula/?rev=5814&view=rev Author: ricozz Date: 2007-10-26 10:19:39 -0700 (Fri, 26 Oct 2007) Log Message: ----------- ebl Fix the LastWritten field which was updated during a restore (or a reading migration) This fixes bug #982 Modified Paths: -------------- branches/Branch-2.2/bacula/src/dird/catreq.c branches/Branch-2.2/bacula/technotes-2.1 Modified: branches/Branch-2.2/bacula/src/dird/catreq.c =================================================================== --- branches/Branch-2.2/bacula/src/dird/catreq.c 2007-10-26 15:45:51 UTC (rev 5813) +++ branches/Branch-2.2/bacula/src/dird/catreq.c 2007-10-26 17:19:39 UTC (rev 5814) @@ -266,6 +266,11 @@ } } Dmsg2(400, "Update media: BefVolJobs=%u After=%u\n", mr.VolJobs, sdmr.VolJobs); + /* Check if the volume has been written by the job, + * and update the LastWritten field if needed */ + if (mr.VolBlocks != sdmr.VolBlocks) { + mr.LastWritten = sdmr.LastWritten; + } /* Copy updated values to original media record */ mr.VolJobs = sdmr.VolJobs; mr.VolFiles = sdmr.VolFiles; @@ -274,7 +279,6 @@ mr.VolMounts = sdmr.VolMounts; mr.VolErrors = sdmr.VolErrors; mr.VolWrites = sdmr.VolWrites; - mr.LastWritten = sdmr.LastWritten; mr.Slot = sdmr.Slot; mr.InChanger = sdmr.InChanger; mr.VolReadTime = sdmr.VolReadTime; Modified: branches/Branch-2.2/bacula/technotes-2.1 =================================================================== --- branches/Branch-2.2/bacula/technotes-2.1 2007-10-26 15:45:51 UTC (rev 5813) +++ branches/Branch-2.2/bacula/technotes-2.1 2007-10-26 17:19:39 UTC (rev 5814) @@ -1,6 +1,9 @@ Technical notes on version 2.2 General: +26Oct07 +ebl Apply 2.2.5-lastwritten.patch to fix the LastWritten field + which was updated during a restore (or a reading migration) bug #982 24Oct07 ebl Use qmake-qt4 instead of qmake when available (debian system). 22Oct07 This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <ke...@us...> - 2007-11-04 09:53:13
|
Revision: 5840 http://bacula.svn.sourceforge.net/bacula/?rev=5840&view=rev Author: kerns Date: 2007-11-04 01:53:17 -0700 (Sun, 04 Nov 2007) Log Message: ----------- kes Fix bug #942 where lots of emails where generated when the heartbeat interval was low and Bacula wanted a different tape from the one in the drive. Modified Paths: -------------- branches/Branch-2.2/bacula/src/stored/wait.c branches/Branch-2.2/bacula/src/version.h branches/Branch-2.2/bacula/technotes-2.1 Added Paths: ----------- branches/Branch-2.2/bacula/patches/2.2.5-hb.patch Added: branches/Branch-2.2/bacula/patches/2.2.5-hb.patch =================================================================== --- branches/Branch-2.2/bacula/patches/2.2.5-hb.patch (rev 0) +++ branches/Branch-2.2/bacula/patches/2.2.5-hb.patch 2007-11-04 08:53:17 UTC (rev 5840) @@ -0,0 +1,186 @@ + + This patch fixes bug #947 where a large number of emails were generated + because the heartbeat interval was small and the tape in the drive did + not correspond to the one wanted by Bacula. + + Apply the patch to version 2.2.5 (and probably any 2.2.x version) with: + + cd <bacula-source> + ./configure <your options> + patch -p0 <2.2.5-hb.patch + make + ... + make install + + +Index: src/stored/wait.c +=================================================================== +--- src/stored/wait.c (revision 5814) ++++ src/stored/wait.c (working copy) +@@ -40,9 +40,8 @@ + #include "bacula.h" /* pull in global headers */ + #include "stored.h" /* pull in Storage Deamon headers */ + +-//static bool double_jcr_wait_time(JCR *jcr); ++const int dbglvl = 400; + +- + /* + * Wait for SysOp to mount a tape on a specific device + * +@@ -62,7 +61,7 @@ + JCR *jcr = dcr->jcr; + + dev->dlock(); +- Dmsg1(100, "Enter blocked=%s\n", dev->print_blocked()); ++ Dmsg1(dbglvl, "Enter blocked=%s\n", dev->print_blocked()); + unmounted = is_device_unmounted(dev); + + dev->poll = false; +@@ -84,27 +83,28 @@ + } + + if (!unmounted) { +- Dmsg1(400, "blocked=%s\n", dev->print_blocked()); ++ Dmsg1(dbglvl, "blocked=%s\n", dev->print_blocked()); + dev->dev_prev_blocked = dev->blocked(); + dev->set_blocked(BST_WAITING_FOR_SYSOP); /* indicate waiting for mount */ + } + + for ( ; !job_canceled(jcr); ) { +- time_t now, start; ++ time_t now, start, total_waited; + + gettimeofday(&tv, &tz); + timeout.tv_nsec = tv.tv_usec * 1000; + timeout.tv_sec = tv.tv_sec + add_wait; + +- Dmsg4(400, "I'm going to sleep on device %s. HB=%d wait=%d add_wait=%d\n", +- dev->print_name(), (int)me->heartbeat_interval, dev->wait_sec, add_wait); ++ Dmsg4(dbglvl, "I'm going to sleep on device %s. HB=%d rem_wait=%d add_wait=%d\n", ++ dev->print_name(), (int)me->heartbeat_interval, dev->rem_wait_sec, add_wait); + start = time(NULL); + /* Wait required time */ + stat = pthread_cond_timedwait(&dev->wait_next_vol, &dev->m_mutex, &timeout); +- Dmsg2(400, "Wokeup from sleep on device stat=%d blocked=%s\n", stat, ++ Dmsg2(dbglvl, "Wokeup from sleep on device stat=%d blocked=%s\n", stat, + dev->print_blocked()); + + now = time(NULL); ++ total_waited = now - first_start; + dev->rem_wait_sec -= (now - start); + + /* Note, this always triggers the first time. We want that. */ +@@ -113,7 +113,7 @@ + /* send heartbeats */ + if (jcr->file_bsock) { + jcr->file_bsock->signal(BNET_HEARTBEAT); +- Dmsg0(400, "Send heartbeat to FD.\n"); ++ Dmsg0(dbglvl, "Send heartbeat to FD.\n"); + } + if (jcr->dir_bsock) { + jcr->dir_bsock->signal(BNET_HEARTBEAT); +@@ -131,7 +131,7 @@ + + + if (dev->rem_wait_sec <= 0) { /* on exceeding wait time return */ +- Dmsg0(400, "Exceed wait time.\n"); ++ Dmsg0(dbglvl, "Exceed wait time.\n"); + stat = W_TIMEOUT; + break; + } +@@ -142,8 +142,8 @@ + unmounted = is_device_unmounted(dev); + + if (!unmounted && dev->vol_poll_interval && +- (now - first_start >= dev->vol_poll_interval)) { +- Dmsg1(400, "In wait blocked=%s\n", dev->print_blocked()); ++ (total_waited >= dev->vol_poll_interval)) { ++ Dmsg1(dbglvl, "poll return in wait blocked=%s\n", dev->print_blocked()); + dev->poll = true; /* returning a poll event */ + stat = W_POLL; + break; +@@ -152,6 +152,7 @@ + * Check if user mounted the device while we were waiting + */ + if (dev->blocked() == BST_MOUNT) { /* mount request ? */ ++ Dmsg0(dbglvl, "Mounted return.\n"); + stat = W_MOUNT; + break; + } +@@ -160,30 +161,39 @@ + * If we did not timeout, then some event happened, so + * return to check if state changed. + */ +- if (stat != 0) { ++ if (stat != ETIMEDOUT) { ++ berrno be; ++ Dmsg2(dbglvl, "Wake return. stat=%d. ERR=%s\n", stat, be.bstrerror(stat)); + stat = W_WAKE; /* someone woke us */ + break; + } + + /* + * At this point, we know we woke up because of a timeout, +- * that was due to a heartbeat, so we just update +- * the wait counters and continue. ++ * that was due to a heartbeat, because any other reason would ++ * have caused us to return, so update the wait counters and continue. + */ +- add_wait = dev->wait_sec - (now - start); ++ add_wait = dev->rem_wait_sec; ++ if (me->heartbeat_interval && add_wait > me->heartbeat_interval) { ++ add_wait = me->heartbeat_interval; ++ } ++ /* If the user did not unmount the tape and we are polling, ensure ++ * that we poll at the correct interval. ++ */ ++ if (!unmounted && dev->vol_poll_interval && ++ add_wait > dev->vol_poll_interval - total_waited) { ++ add_wait = dev->vol_poll_interval - total_waited; ++ } + if (add_wait < 0) { + add_wait = 0; + } +- if (me->heartbeat_interval && add_wait > me->heartbeat_interval) { +- add_wait = me->heartbeat_interval; +- } + } + + if (!unmounted) { + dev->set_blocked(dev->dev_prev_blocked); /* restore entry state */ +- Dmsg1(400, "set %s\n", dev->print_blocked()); ++ Dmsg1(dbglvl, "set %s\n", dev->print_blocked()); + } +- Dmsg1(400, "Exit blocked=%s\n", dev->print_blocked()); ++ Dmsg1(dbglvl, "Exit blocked=%s\n", dev->print_blocked()); + dev->dunlock(); + return stat; + } +@@ -209,7 +219,7 @@ + const int max_wait_time = 1 * 60; /* wait 1 minute */ + char ed1[50]; + +- Dmsg0(100, "Enter wait_for_device\n"); ++ Dmsg0(dbglvl, "Enter wait_for_device\n"); + P(device_release_mutex); + + if (++retries % 5 == 0) { +@@ -222,14 +232,14 @@ + timeout.tv_nsec = tv.tv_usec * 1000; + timeout.tv_sec = tv.tv_sec + max_wait_time; + +- Dmsg1(100, "JobId=%u going to wait for a device.\n", (uint32_t)jcr->JobId); ++ Dmsg0(dbglvl, "Going to wait for a device.\n"); + + /* Wait required time */ + stat = pthread_cond_timedwait(&wait_device_release, &device_release_mutex, &timeout); +- Dmsg2(100, "JobId=%u wokeup from sleep on device stat=%d\n", (uint32_t)jcr->JobId, stat); ++ Dmsg1(dbglvl, "Wokeup from sleep on device stat=%d\n", stat); + + V(device_release_mutex); +- Dmsg2(100, "JobId=%u return from wait_device ok=%d\n", (uint32_t)jcr->JobId, ok); ++ Dmsg1(dbglvl, "Return from wait_device ok=%d\n", ok); + return ok; + } + Modified: branches/Branch-2.2/bacula/src/stored/wait.c =================================================================== --- branches/Branch-2.2/bacula/src/stored/wait.c 2007-11-03 18:17:15 UTC (rev 5839) +++ branches/Branch-2.2/bacula/src/stored/wait.c 2007-11-04 08:53:17 UTC (rev 5840) @@ -40,9 +40,8 @@ #include "bacula.h" /* pull in global headers */ #include "stored.h" /* pull in Storage Deamon headers */ -//static bool double_jcr_wait_time(JCR *jcr); +const int dbglvl = 400; - /* * Wait for SysOp to mount a tape on a specific device * @@ -62,7 +61,7 @@ JCR *jcr = dcr->jcr; dev->dlock(); - Dmsg1(100, "Enter blocked=%s\n", dev->print_blocked()); + Dmsg1(dbglvl, "Enter blocked=%s\n", dev->print_blocked()); unmounted = is_device_unmounted(dev); dev->poll = false; @@ -84,27 +83,28 @@ } if (!unmounted) { - Dmsg1(400, "blocked=%s\n", dev->print_blocked()); + Dmsg1(dbglvl, "blocked=%s\n", dev->print_blocked()); dev->dev_prev_blocked = dev->blocked(); dev->set_blocked(BST_WAITING_FOR_SYSOP); /* indicate waiting for mount */ } for ( ; !job_canceled(jcr); ) { - time_t now, start; + time_t now, start, total_waited; gettimeofday(&tv, &tz); timeout.tv_nsec = tv.tv_usec * 1000; timeout.tv_sec = tv.tv_sec + add_wait; - Dmsg4(400, "I'm going to sleep on device %s. HB=%d wait=%d add_wait=%d\n", - dev->print_name(), (int)me->heartbeat_interval, dev->wait_sec, add_wait); + Dmsg4(dbglvl, "I'm going to sleep on device %s. HB=%d rem_wait=%d add_wait=%d\n", + dev->print_name(), (int)me->heartbeat_interval, dev->rem_wait_sec, add_wait); start = time(NULL); /* Wait required time */ stat = pthread_cond_timedwait(&dev->wait_next_vol, &dev->m_mutex, &timeout); - Dmsg2(400, "Wokeup from sleep on device stat=%d blocked=%s\n", stat, + Dmsg2(dbglvl, "Wokeup from sleep on device stat=%d blocked=%s\n", stat, dev->print_blocked()); now = time(NULL); + total_waited = now - first_start; dev->rem_wait_sec -= (now - start); /* Note, this always triggers the first time. We want that. */ @@ -113,7 +113,7 @@ /* send heartbeats */ if (jcr->file_bsock) { jcr->file_bsock->signal(BNET_HEARTBEAT); - Dmsg0(400, "Send heartbeat to FD.\n"); + Dmsg0(dbglvl, "Send heartbeat to FD.\n"); } if (jcr->dir_bsock) { jcr->dir_bsock->signal(BNET_HEARTBEAT); @@ -131,7 +131,7 @@ if (dev->rem_wait_sec <= 0) { /* on exceeding wait time return */ - Dmsg0(400, "Exceed wait time.\n"); + Dmsg0(dbglvl, "Exceed wait time.\n"); stat = W_TIMEOUT; break; } @@ -142,8 +142,8 @@ unmounted = is_device_unmounted(dev); if (!unmounted && dev->vol_poll_interval && - (now - first_start >= dev->vol_poll_interval)) { - Dmsg1(400, "In wait blocked=%s\n", dev->print_blocked()); + (total_waited >= dev->vol_poll_interval)) { + Dmsg1(dbglvl, "poll return in wait blocked=%s\n", dev->print_blocked()); dev->poll = true; /* returning a poll event */ stat = W_POLL; break; @@ -152,6 +152,7 @@ * Check if user mounted the device while we were waiting */ if (dev->blocked() == BST_MOUNT) { /* mount request ? */ + Dmsg0(dbglvl, "Mounted return.\n"); stat = W_MOUNT; break; } @@ -160,30 +161,39 @@ * If we did not timeout, then some event happened, so * return to check if state changed. */ - if (stat != 0) { + if (stat != ETIMEDOUT) { + berrno be; + Dmsg2(dbglvl, "Wake return. stat=%d. ERR=%s\n", stat, be.bstrerror(stat)); stat = W_WAKE; /* someone woke us */ break; } /* * At this point, we know we woke up because of a timeout, - * that was due to a heartbeat, so we just update - * the wait counters and continue. + * that was due to a heartbeat, because any other reason would + * have caused us to return, so update the wait counters and continue. */ - add_wait = dev->wait_sec - (now - start); + add_wait = dev->rem_wait_sec; + if (me->heartbeat_interval && add_wait > me->heartbeat_interval) { + add_wait = me->heartbeat_interval; + } + /* If the user did not unmount the tape and we are polling, ensure + * that we poll at the correct interval. + */ + if (!unmounted && dev->vol_poll_interval && + add_wait > dev->vol_poll_interval - total_waited) { + add_wait = dev->vol_poll_interval - total_waited; + } if (add_wait < 0) { add_wait = 0; } - if (me->heartbeat_interval && add_wait > me->heartbeat_interval) { - add_wait = me->heartbeat_interval; - } } if (!unmounted) { dev->set_blocked(dev->dev_prev_blocked); /* restore entry state */ - Dmsg1(400, "set %s\n", dev->print_blocked()); + Dmsg1(dbglvl, "set %s\n", dev->print_blocked()); } - Dmsg1(400, "Exit blocked=%s\n", dev->print_blocked()); + Dmsg1(dbglvl, "Exit blocked=%s\n", dev->print_blocked()); dev->dunlock(); return stat; } @@ -209,7 +219,7 @@ const int max_wait_time = 1 * 60; /* wait 1 minute */ char ed1[50]; - Dmsg0(100, "Enter wait_for_device\n"); + Dmsg0(dbglvl, "Enter wait_for_device\n"); P(device_release_mutex); if (++retries % 5 == 0) { @@ -222,14 +232,14 @@ timeout.tv_nsec = tv.tv_usec * 1000; timeout.tv_sec = tv.tv_sec + max_wait_time; - Dmsg1(100, "JobId=%u going to wait for a device.\n", (uint32_t)jcr->JobId); + Dmsg0(dbglvl, "Going to wait for a device.\n"); /* Wait required time */ stat = pthread_cond_timedwait(&wait_device_release, &device_release_mutex, &timeout); - Dmsg2(100, "JobId=%u wokeup from sleep on device stat=%d\n", (uint32_t)jcr->JobId, stat); + Dmsg1(dbglvl, "Wokeup from sleep on device stat=%d\n", stat); V(device_release_mutex); - Dmsg2(100, "JobId=%u return from wait_device ok=%d\n", (uint32_t)jcr->JobId, ok); + Dmsg1(dbglvl, "Return from wait_device ok=%d\n", ok); return ok; } Modified: branches/Branch-2.2/bacula/src/version.h =================================================================== --- branches/Branch-2.2/bacula/src/version.h 2007-11-03 18:17:15 UTC (rev 5839) +++ branches/Branch-2.2/bacula/src/version.h 2007-11-04 08:53:17 UTC (rev 5840) @@ -3,9 +3,9 @@ */ #undef VERSION -#define VERSION "2.2.5" -#define BDATE "09 October 2007" -#define LSMDATE "09Oct07" +#define VERSION "2.2.6" +#define BDATE "02 November 2007" +#define LSMDATE "02Nov07" #define PROG_COPYRIGHT "Copyright (C) %d-2007 Free Software Foundation Europe e.V.\n" #define BYEAR "2007" /* year for copyright messages in progs */ Modified: branches/Branch-2.2/bacula/technotes-2.1 =================================================================== --- branches/Branch-2.2/bacula/technotes-2.1 2007-11-03 18:17:15 UTC (rev 5839) +++ branches/Branch-2.2/bacula/technotes-2.1 2007-11-04 08:53:17 UTC (rev 5840) @@ -1,6 +1,10 @@ Technical notes on version 2.2 General: +02Nov07 +kes Fix bug #942 where lots of emails where generated when the heartbeat + interval was low and Bacula wanted a different tape from the one in + the drive. 26Oct07 ebl Apply 2.2.5-lastwritten.patch to fix the LastWritten field which was updated during a restore (or a reading migration) bug #982 This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <ke...@us...> - 2007-11-04 10:43:00
|
Revision: 5841 http://bacula.svn.sourceforge.net/bacula/?rev=5841&view=rev Author: kerns Date: 2007-11-04 02:43:02 -0800 (Sun, 04 Nov 2007) Log Message: ----------- kes Fix bug #942 where lots of emails where generated when the heartbeat interval was low and Bacula wanted a different tape from the one in the drive. Modified Paths: -------------- branches/Branch-2.2/bacula/src/dird/verify.c branches/Branch-2.2/bacula/src/version.h Added Paths: ----------- branches/Branch-2.2/bacula/patches/2.2.5-verify-loop.patch Added: branches/Branch-2.2/bacula/patches/2.2.5-verify-loop.patch =================================================================== --- branches/Branch-2.2/bacula/patches/2.2.5-verify-loop.patch (rev 0) +++ branches/Branch-2.2/bacula/patches/2.2.5-verify-loop.patch 2007-11-04 10:43:02 UTC (rev 5841) @@ -0,0 +1,33 @@ + + This patch fixes bug #1003 where putting the message output from + a Verify job into the catalog results in a recursive loop. The problem + seems to show up only with postgresql (to be verified). + + Apply it to version 2.2.5 (or probably any previous 2.2.x version) with + + cd <bacula-source> + ./configure <your-options> not necessary if already configured + patch -p0 <2.2.5-verify-loop.patch + make + ... + make install + + +Index: src/dird/verify.c +=================================================================== +--- src/dird/verify.c (revision 5814) ++++ src/dird/verify.c (working copy) +@@ -767,11 +767,11 @@ + return 1; + } + if (!jcr->fn_printed) { +- Jmsg(jcr, M_INFO, 0, _("\nThe following files are in the Catalog but not on %s:\n"), ++ Qmsg(jcr, M_INFO, 0, _("\nThe following files are in the Catalog but not on %s:\n"), + jcr->JobLevel == L_VERIFY_VOLUME_TO_CATALOG ? "the Volume(s)" : "disk"); + jcr->fn_printed = true; + } +- Jmsg(jcr, M_INFO, 0, " %s%s\n", row[0]?row[0]:"", row[1]?row[1]:""); ++ Qmsg(jcr, M_INFO, 0, " %s%s\n", row[0]?row[0]:"", row[1]?row[1]:""); + return 0; + } + Modified: branches/Branch-2.2/bacula/src/dird/verify.c =================================================================== --- branches/Branch-2.2/bacula/src/dird/verify.c 2007-11-04 08:53:17 UTC (rev 5840) +++ branches/Branch-2.2/bacula/src/dird/verify.c 2007-11-04 10:43:02 UTC (rev 5841) @@ -767,11 +767,11 @@ return 1; } if (!jcr->fn_printed) { - Jmsg(jcr, M_INFO, 0, _("\nThe following files are in the Catalog but not on %s:\n"), + Qmsg(jcr, M_INFO, 0, _("\nThe following files are in the Catalog but not on %s:\n"), jcr->JobLevel == L_VERIFY_VOLUME_TO_CATALOG ? "the Volume(s)" : "disk"); jcr->fn_printed = true; } - Jmsg(jcr, M_INFO, 0, " %s%s\n", row[0]?row[0]:"", row[1]?row[1]:""); + Qmsg(jcr, M_INFO, 0, " %s%s\n", row[0]?row[0]:"", row[1]?row[1]:""); return 0; } Modified: branches/Branch-2.2/bacula/src/version.h =================================================================== --- branches/Branch-2.2/bacula/src/version.h 2007-11-04 08:53:17 UTC (rev 5840) +++ branches/Branch-2.2/bacula/src/version.h 2007-11-04 10:43:02 UTC (rev 5841) @@ -4,8 +4,8 @@ #undef VERSION #define VERSION "2.2.6" -#define BDATE "02 November 2007" -#define LSMDATE "02Nov07" +#define BDATE "04 November 2007" +#define LSMDATE "04Nov07" #define PROG_COPYRIGHT "Copyright (C) %d-2007 Free Software Foundation Europe e.V.\n" #define BYEAR "2007" /* year for copyright messages in progs */ This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <ke...@us...> - 2007-11-04 11:06:56
|
Revision: 5842 http://bacula.svn.sourceforge.net/bacula/?rev=5842&view=rev Author: kerns Date: 2007-11-04 03:06:53 -0800 (Sun, 04 Nov 2007) Log Message: ----------- Undo change in r5841 as log comment was wrong Modified Paths: -------------- branches/Branch-2.2/bacula/src/dird/verify.c branches/Branch-2.2/bacula/src/version.h branches/Branch-2.2/bacula/technotes-2.1 Removed Paths: ------------- branches/Branch-2.2/bacula/patches/2.2.5-verify-loop.patch Deleted: branches/Branch-2.2/bacula/patches/2.2.5-verify-loop.patch =================================================================== --- branches/Branch-2.2/bacula/patches/2.2.5-verify-loop.patch 2007-11-04 10:43:02 UTC (rev 5841) +++ branches/Branch-2.2/bacula/patches/2.2.5-verify-loop.patch 2007-11-04 11:06:53 UTC (rev 5842) @@ -1,33 +0,0 @@ - - This patch fixes bug #1003 where putting the message output from - a Verify job into the catalog results in a recursive loop. The problem - seems to show up only with postgresql (to be verified). - - Apply it to version 2.2.5 (or probably any previous 2.2.x version) with - - cd <bacula-source> - ./configure <your-options> not necessary if already configured - patch -p0 <2.2.5-verify-loop.patch - make - ... - make install - - -Index: src/dird/verify.c -=================================================================== ---- src/dird/verify.c (revision 5814) -+++ src/dird/verify.c (working copy) -@@ -767,11 +767,11 @@ - return 1; - } - if (!jcr->fn_printed) { -- Jmsg(jcr, M_INFO, 0, _("\nThe following files are in the Catalog but not on %s:\n"), -+ Qmsg(jcr, M_INFO, 0, _("\nThe following files are in the Catalog but not on %s:\n"), - jcr->JobLevel == L_VERIFY_VOLUME_TO_CATALOG ? "the Volume(s)" : "disk"); - jcr->fn_printed = true; - } -- Jmsg(jcr, M_INFO, 0, " %s%s\n", row[0]?row[0]:"", row[1]?row[1]:""); -+ Qmsg(jcr, M_INFO, 0, " %s%s\n", row[0]?row[0]:"", row[1]?row[1]:""); - return 0; - } - Modified: branches/Branch-2.2/bacula/src/dird/verify.c =================================================================== --- branches/Branch-2.2/bacula/src/dird/verify.c 2007-11-04 10:43:02 UTC (rev 5841) +++ branches/Branch-2.2/bacula/src/dird/verify.c 2007-11-04 11:06:53 UTC (rev 5842) @@ -767,11 +767,11 @@ return 1; } if (!jcr->fn_printed) { - Qmsg(jcr, M_INFO, 0, _("\nThe following files are in the Catalog but not on %s:\n"), + Jmsg(jcr, M_INFO, 0, _("\nThe following files are in the Catalog but not on %s:\n"), jcr->JobLevel == L_VERIFY_VOLUME_TO_CATALOG ? "the Volume(s)" : "disk"); jcr->fn_printed = true; } - Qmsg(jcr, M_INFO, 0, " %s%s\n", row[0]?row[0]:"", row[1]?row[1]:""); + Jmsg(jcr, M_INFO, 0, " %s%s\n", row[0]?row[0]:"", row[1]?row[1]:""); return 0; } Modified: branches/Branch-2.2/bacula/src/version.h =================================================================== --- branches/Branch-2.2/bacula/src/version.h 2007-11-04 10:43:02 UTC (rev 5841) +++ branches/Branch-2.2/bacula/src/version.h 2007-11-04 11:06:53 UTC (rev 5842) @@ -4,8 +4,8 @@ #undef VERSION #define VERSION "2.2.6" -#define BDATE "04 November 2007" -#define LSMDATE "04Nov07" +#define BDATE "02 November 2007" +#define LSMDATE "02Nov07" #define PROG_COPYRIGHT "Copyright (C) %d-2007 Free Software Foundation Europe e.V.\n" #define BYEAR "2007" /* year for copyright messages in progs */ Modified: branches/Branch-2.2/bacula/technotes-2.1 =================================================================== --- branches/Branch-2.2/bacula/technotes-2.1 2007-11-04 10:43:02 UTC (rev 5841) +++ branches/Branch-2.2/bacula/technotes-2.1 2007-11-04 11:06:53 UTC (rev 5842) @@ -1,6 +1,10 @@ Technical notes on version 2.2 General: +04Nov07 +kes This patch fixes bug #1003 where putting the message output from + a Verify job into the catalog results in a recursive loop. The problem + seems to show up only with postgresql (to be verified). 02Nov07 kes Fix bug #942 where lots of emails where generated when the heartbeat interval was low and Bacula wanted a different tape from the one in This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <ke...@us...> - 2007-11-04 11:10:27
|
Revision: 5843 http://bacula.svn.sourceforge.net/bacula/?rev=5843&view=rev Author: kerns Date: 2007-11-04 03:10:30 -0800 (Sun, 04 Nov 2007) Log Message: ----------- kes This patch fixes bug #1003 where putting the message output from a Verify job into the catalog results in a recursive loop. The problem seems to show up only with postgresql (to be verified). Modified Paths: -------------- branches/Branch-2.2/bacula/src/dird/verify.c branches/Branch-2.2/bacula/src/version.h Added Paths: ----------- branches/Branch-2.2/bacula/patches/2.2.5-verify-loop.patch Added: branches/Branch-2.2/bacula/patches/2.2.5-verify-loop.patch =================================================================== --- branches/Branch-2.2/bacula/patches/2.2.5-verify-loop.patch (rev 0) +++ branches/Branch-2.2/bacula/patches/2.2.5-verify-loop.patch 2007-11-04 11:10:30 UTC (rev 5843) @@ -0,0 +1,33 @@ + + This patch fixes bug #1003 where putting the message output from + a Verify job into the catalog results in a recursive loop. The problem + seems to show up only with postgresql (to be verified). + + Apply it to version 2.2.5 (or probably any previous 2.2.x version) with + + cd <bacula-source> + ./configure <your-options> not necessary if already configured + patch -p0 <2.2.5-verify-loop.patch + make + ... + make install + + +Index: src/dird/verify.c +=================================================================== +--- src/dird/verify.c (revision 5814) ++++ src/dird/verify.c (working copy) +@@ -767,11 +767,11 @@ + return 1; + } + if (!jcr->fn_printed) { +- Jmsg(jcr, M_INFO, 0, _("\nThe following files are in the Catalog but not on %s:\n"), ++ Qmsg(jcr, M_INFO, 0, _("\nThe following files are in the Catalog but not on %s:\n"), + jcr->JobLevel == L_VERIFY_VOLUME_TO_CATALOG ? "the Volume(s)" : "disk"); + jcr->fn_printed = true; + } +- Jmsg(jcr, M_INFO, 0, " %s%s\n", row[0]?row[0]:"", row[1]?row[1]:""); ++ Qmsg(jcr, M_INFO, 0, " %s%s\n", row[0]?row[0]:"", row[1]?row[1]:""); + return 0; + } + Modified: branches/Branch-2.2/bacula/src/dird/verify.c =================================================================== --- branches/Branch-2.2/bacula/src/dird/verify.c 2007-11-04 11:06:53 UTC (rev 5842) +++ branches/Branch-2.2/bacula/src/dird/verify.c 2007-11-04 11:10:30 UTC (rev 5843) @@ -767,11 +767,11 @@ return 1; } if (!jcr->fn_printed) { - Jmsg(jcr, M_INFO, 0, _("\nThe following files are in the Catalog but not on %s:\n"), + Qmsg(jcr, M_INFO, 0, _("\nThe following files are in the Catalog but not on %s:\n"), jcr->JobLevel == L_VERIFY_VOLUME_TO_CATALOG ? "the Volume(s)" : "disk"); jcr->fn_printed = true; } - Jmsg(jcr, M_INFO, 0, " %s%s\n", row[0]?row[0]:"", row[1]?row[1]:""); + Qmsg(jcr, M_INFO, 0, " %s%s\n", row[0]?row[0]:"", row[1]?row[1]:""); return 0; } Modified: branches/Branch-2.2/bacula/src/version.h =================================================================== --- branches/Branch-2.2/bacula/src/version.h 2007-11-04 11:06:53 UTC (rev 5842) +++ branches/Branch-2.2/bacula/src/version.h 2007-11-04 11:10:30 UTC (rev 5843) @@ -4,8 +4,8 @@ #undef VERSION #define VERSION "2.2.6" -#define BDATE "02 November 2007" -#define LSMDATE "02Nov07" +#define BDATE "04 November 2007" +#define LSMDATE "04Nov07" #define PROG_COPYRIGHT "Copyright (C) %d-2007 Free Software Foundation Europe e.V.\n" #define BYEAR "2007" /* year for copyright messages in progs */ This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <ke...@us...> - 2007-11-09 04:31:54
|
Revision: 5881 http://bacula.svn.sourceforge.net/bacula/?rev=5881&view=rev Author: kerns Date: 2007-11-08 20:31:14 -0800 (Thu, 08 Nov 2007) Log Message: ----------- Get fix for joblist bug in bat from trunk. Modified Paths: -------------- branches/Branch-2.2/bacula/src/qt-console/joblist/joblist.cpp branches/Branch-2.2/bacula/src/version.h branches/Branch-2.2/bacula/technotes-2.1 Modified: branches/Branch-2.2/bacula/src/qt-console/joblist/joblist.cpp =================================================================== --- branches/Branch-2.2/bacula/src/qt-console/joblist/joblist.cpp 2007-11-09 01:20:40 UTC (rev 5880) +++ branches/Branch-2.2/bacula/src/qt-console/joblist/joblist.cpp 2007-11-09 04:31:14 UTC (rev 5881) @@ -490,7 +490,6 @@ void JobList::consoleListJobTotals() { QString cmd("list jobtotals"); - cmd += m_currentJob; if (mainWin->m_longList) { cmd.prepend("l"); } consoleCommand(cmd); } Modified: branches/Branch-2.2/bacula/src/version.h =================================================================== --- branches/Branch-2.2/bacula/src/version.h 2007-11-09 01:20:40 UTC (rev 5880) +++ branches/Branch-2.2/bacula/src/version.h 2007-11-09 04:31:14 UTC (rev 5881) @@ -4,8 +4,8 @@ #undef VERSION #define VERSION "2.2.6" -#define BDATE "04 November 2007" -#define LSMDATE "04Nov07" +#define BDATE "09 November 2007" +#define LSMDATE "09Nov07" #define PROG_COPYRIGHT "Copyright (C) %d-2007 Free Software Foundation Europe e.V.\n" #define BYEAR "2007" /* year for copyright messages in progs */ Modified: branches/Branch-2.2/bacula/technotes-2.1 =================================================================== --- branches/Branch-2.2/bacula/technotes-2.1 2007-11-09 01:20:40 UTC (rev 5880) +++ branches/Branch-2.2/bacula/technotes-2.1 2007-11-09 04:31:14 UTC (rev 5881) @@ -1,6 +1,8 @@ Technical notes on version 2.2 General: +09Nov07 +kes Get fix for joblist bug in bat from trunk. 04Nov07 kes This patch fixes bug #1003 where putting the message output from a Verify job into the catalog results in a recursive loop. The problem This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <ke...@us...> - 2007-11-10 09:00:19
|
Revision: 5882 http://bacula.svn.sourceforge.net/bacula/?rev=5882&view=rev Author: kerns Date: 2007-11-10 01:00:23 -0800 (Sat, 10 Nov 2007) Log Message: ----------- Update doc for release Modified Paths: -------------- branches/Branch-2.2/bacula/ChangeLog branches/Branch-2.2/bacula/ReleaseNotes branches/Branch-2.2/bacula/src/version.h Modified: branches/Branch-2.2/bacula/ChangeLog =================================================================== --- branches/Branch-2.2/bacula/ChangeLog 2007-11-09 04:31:14 UTC (rev 5881) +++ branches/Branch-2.2/bacula/ChangeLog 2007-11-10 09:00:23 UTC (rev 5882) @@ -2,6 +2,40 @@ General: Release Version 2.2.5 +09Nov07 +kes Get fix for joblist bug in bat from trunk. +04Nov07 +kes This patch fixes bug #1003 where putting the message output from + a Verify job into the catalog results in a recursive loop. The problem + seems to show up only with postgresql (to be verified). +02Nov07 +kes Fix bug #942 where lots of emails where generated when the heartbeat + interval was low and Bacula wanted a different tape from the one in + the drive. +26Oct07 +ebl Apply 2.2.5-lastwritten.patch to fix the LastWritten field + which was updated during a restore (or a reading migration) bug #982 +24Oct07 +ebl Use qmake-qt4 instead of qmake when available (debian system). +22Oct07 +kes Add a security warning to src/cats/make_catalog_backup.in indicating + that passing the password via the command line (arg 3) is insecure. + This responds to bug #990 (it doesn't fix it). +kes Apply 2.2.5-postgresql-errors.patch +kes Remove unneeded File table index on JobId, which is already + present as the first index of another multi-index. +19Oct07 +kes Set default debug_level to zero. This corrects bugs #991 and #993. +kes Fix a crash in bat when it cannot connect to the Director for example + if the Director is not running. +16Oct07 +kes Activate Close button on tray-monitor window. This fixes + bug #986. +12Oct07 +kes Fix spurious warning message printed when creating a volume with + a LabelFormat. This fixes bug #976. + +Release Version 2.2.5 09Oct07 kes Add JobId in place of Job name in all the Jmsg() output. kes Correct the APP_DESC for the Win32 storage service (remove an e). Modified: branches/Branch-2.2/bacula/ReleaseNotes =================================================================== --- branches/Branch-2.2/bacula/ReleaseNotes 2007-11-09 04:31:14 UTC (rev 5881) +++ branches/Branch-2.2/bacula/ReleaseNotes 2007-11-10 09:00:23 UTC (rev 5882) @@ -1,5 +1,5 @@ - Release Notes for Bacula 2.2.5 + Release Notes for Bacula 2.2.6 Bacula code: Total files = 520 Total lines = 195,550 (*.h *.c *.in) 82 new files, 41,221 new lines of code, 208,380 lines of change from 2.0.3 @@ -10,6 +10,12 @@ not have to upgrade all your File daemons when you upgrade. There is no database upgrade needed from version 2.0.x to 2.2.0. +Version 2.2.6 is a minor bug fix realease to version 2.2.5 +- It fixes bugs: #1003, 942, 982, 990(response only), 991, + 993, 986, 976. +- Fix bat crash wen it cannot connect to Director. +- Fix joblist failure bug in bat. + Version 2.2.5 is a major bug fix release to version 2.2.4 - It fixes the following bugs: #961, 962, 963, 969, 968, 960, 964, (possibly 935 and 903), 953, 953, 967, 966, 965, 954, Modified: branches/Branch-2.2/bacula/src/version.h =================================================================== --- branches/Branch-2.2/bacula/src/version.h 2007-11-09 04:31:14 UTC (rev 5881) +++ branches/Branch-2.2/bacula/src/version.h 2007-11-10 09:00:23 UTC (rev 5882) @@ -4,8 +4,8 @@ #undef VERSION #define VERSION "2.2.6" -#define BDATE "09 November 2007" -#define LSMDATE "09Nov07" +#define BDATE "10 November 2007" +#define LSMDATE "10Nov07" #define PROG_COPYRIGHT "Copyright (C) %d-2007 Free Software Foundation Europe e.V.\n" #define BYEAR "2007" /* year for copyright messages in progs */ This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <ke...@us...> - 2007-11-14 07:31:05
|
Revision: 5926 http://bacula.svn.sourceforge.net/bacula/?rev=5926&view=rev Author: kerns Date: 2007-11-13 23:31:07 -0800 (Tue, 13 Nov 2007) Log Message: ----------- kes This patch fixes the infinite loop when trying to increase the maximum number of volumes in a Pool during the add command. This patch fixes bug #1008. Modified Paths: -------------- branches/Branch-2.2/bacula/src/dird/ua_cmds.c branches/Branch-2.2/bacula/technotes-2.1 Added Paths: ----------- branches/Branch-2.2/bacula/patches/2.2.6-add.patch Added: branches/Branch-2.2/bacula/patches/2.2.6-add.patch =================================================================== --- branches/Branch-2.2/bacula/patches/2.2.6-add.patch (rev 0) +++ branches/Branch-2.2/bacula/patches/2.2.6-add.patch 2007-11-14 07:31:07 UTC (rev 5926) @@ -0,0 +1,35 @@ + + This patch fixes the infinite loop when trying to increase the + maximum number of volumes in a Pool during the add command. + This patch fixes bug #1008. + + It can be applied to Bacula version 2.2.6 (and probably earlier + 2.2.x versions) with: + + cd <bacula-source> + ./configure <your options> + patch -p0 <2.2.6-add.patch + make + ... + make install + +Index: src/dird/ua_cmds.c +=================================================================== +--- src/dird/ua_cmds.c (revision 5901) ++++ src/dird/ua_cmds.c (working copy) +@@ -244,12 +244,10 @@ + + while (pr.MaxVols > 0 && pr.NumVols >= pr.MaxVols) { + ua->warning_msg(_("Pool already has maximum volumes=%d\n"), pr.MaxVols); +- for (;;) { +- if (!get_pint(ua, _("Enter new maximum (zero for unlimited): "))) { +- return 1; +- } +- pr.MaxVols = ua->pint32_val; ++ if (!get_pint(ua, _("Enter new maximum (zero for unlimited): "))) { ++ return 1; + } ++ pr.MaxVols = ua->pint32_val; + } + + /* Get media type */ Modified: branches/Branch-2.2/bacula/src/dird/ua_cmds.c =================================================================== --- branches/Branch-2.2/bacula/src/dird/ua_cmds.c 2007-11-14 07:09:36 UTC (rev 5925) +++ branches/Branch-2.2/bacula/src/dird/ua_cmds.c 2007-11-14 07:31:07 UTC (rev 5926) @@ -244,12 +244,10 @@ while (pr.MaxVols > 0 && pr.NumVols >= pr.MaxVols) { ua->warning_msg(_("Pool already has maximum volumes=%d\n"), pr.MaxVols); - for (;;) { - if (!get_pint(ua, _("Enter new maximum (zero for unlimited): "))) { - return 1; - } - pr.MaxVols = ua->pint32_val; + if (!get_pint(ua, _("Enter new maximum (zero for unlimited): "))) { + return 1; } + pr.MaxVols = ua->pint32_val; } /* Get media type */ Modified: branches/Branch-2.2/bacula/technotes-2.1 =================================================================== --- branches/Branch-2.2/bacula/technotes-2.1 2007-11-14 07:09:36 UTC (rev 5925) +++ branches/Branch-2.2/bacula/technotes-2.1 2007-11-14 07:31:07 UTC (rev 5926) @@ -1,6 +1,11 @@ Technical notes on version 2.2 General: +14Nov07 +kes This patch fixes the infinite loop when trying to increase the + maximum number of volumes in a Pool during the add command. + This patch fixes bug #1008. + Release Version 2.2.6 09Nov07 kes Get fix for joblist bug in bat from trunk. @@ -35,6 +40,7 @@ kes Fix spurious warning message printed when creating a volume with a LabelFormat. This fixes bug #976. +Release Version 2.2.5 09Oct07 kes Add JobId in place of Job name in all the Jmsg() output. kes Correct the APP_DESC for the Win32 storage service (remove an e). This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <ke...@us...> - 2007-11-25 16:12:11
|
Revision: 5984 http://bacula.svn.sourceforge.net/bacula/?rev=5984&view=rev Author: kerns Date: 2007-11-25 08:12:14 -0800 (Sun, 25 Nov 2007) Log Message: ----------- kes This patch should fix the Mac OS X build problem on the latest Darwin, where sys/types.h was not included correctly (apparently due to a change in the Mac headers). The solution was to explicitly ensure that it is defined for the ./configure. This patch also has a rebuild of configure that includes the Debian qt4 kludge (look for alternate qt4 names). This patch fixes bug #1020. Modified Paths: -------------- branches/Branch-2.2/bacula/autoconf/configure.in branches/Branch-2.2/bacula/configure branches/Branch-2.2/bacula/src/bc_types.h branches/Branch-2.2/bacula/technotes-2.1 Added Paths: ----------- branches/Branch-2.2/bacula/patches/2.2.6-mac-build.patch branches/Branch-2.2/bacula/patches/2.2.6-queued-msg.patch Modified: branches/Branch-2.2/bacula/autoconf/configure.in =================================================================== --- branches/Branch-2.2/bacula/autoconf/configure.in 2007-11-25 16:02:37 UTC (rev 5983) +++ branches/Branch-2.2/bacula/autoconf/configure.in 2007-11-25 16:12:14 UTC (rev 5984) @@ -1394,6 +1394,7 @@ stdlib.h \ stdint.h \ string.h \ + strings.h \ termios.h \ termcap.h \ term.h \ @@ -1402,9 +1403,11 @@ sys/byteorder.h \ sys/ioctl.h \ sys/select.h \ + sys/socket.h \ sys/sockio.h \ + sys/stat.h \ sys/time.h \ - sys/socket.h \ + sys/types.h \ arpa/nameser.h \ resolv.h \ mtio.h \ Modified: branches/Branch-2.2/bacula/configure =================================================================== --- branches/Branch-2.2/bacula/configure 2007-11-25 16:02:37 UTC (rev 5983) +++ branches/Branch-2.2/bacula/configure 2007-11-25 16:12:14 UTC (rev 5984) @@ -309,7 +309,7 @@ # include <unistd.h> #endif" -ac_subst_vars='SHELL PATH_SEPARATOR PACKAGE_NAME PACKAGE_TARNAME PACKAGE_VERSION PACKAGE_STRING PACKAGE_BUGREPORT exec_prefix prefix program_transform_name bindir sbindir archivedir libexecdir datadir sysconfdir sharedstatedir localstatedir libdir includedir oldincludedir infodir mandir build_alias host_alias target_alias DEFS ECHO_C ECHO_N ECHO_T LIBS BUILD_DIR TOP_DIR TRUEPRG FALSEPRG VERSION DATE LSMDATE CC CFLAGS LDFLAGS CPPFLAGS ac_ct_CC EXEEXT OBJEXT CXX CXXFLAGS ac_ct_CXX CPP EGREP INSTALL_PROGRAM INSTALL_SCRIPT INSTALL_DATA RANLIB ac_ct_RANLIB MV RM CP SED ECHO CMP TBL AR OPENSSL MTX DD MKISOFS PYTHON GROWISOFS DVDRWMEDIAINFO DVDRWFORMAT PKGCONFIG WXCONFIG WXFLAGS CDRECORD PIDOF AWK ARFLAGS MAKE_SHELL LOCAL_LIBS LOCAL_CFLAGS LOCAL_LDFLAGS LOCAL_DEFS build build_cpu build_vendor build_os host host_cpu host_vendor host_os HAVE_SUN_OS_TRUE HAVE_SUN_OS_FALSE HAVE_OSF1_OS_TRUE HAVE_OSF1_OS_FALSE HAVE_AIX_OS_TRUE HAVE_AIX_OS_FALSE HAVE_HPUX_OS_TRUE HAVE_HPUX_OS_FALSE HAVE_LINUX_OS_TRUE HAVE_LINUX_OS_FALSE HAVE_FREEBSD_OS_TRUE HAVE_FREEBSD_OS_FALSE HAVE_NETBSD_OS_TRUE HAVE_NETBSD_OS_FALSE HAVE_OPENBSD_OS_TRUE HAVE_OPENBSD_OS_FALSE HAVE_BSDI_OS_TRUE HAVE_BSDI_OS_FALSE HAVE_SGI_OS_TRUE HAVE_SGI_OS_FALSE HAVE_IRIX_OS_TRUE HAVE_IRIX_OS_FALSE HAVE_DARWIN_OS_TRUE HAVE_DARWIN_OS_FALSE SET_MAKE MKINSTALLDIRS USE_NLS MSGFMT GMSGFMT XGETTEXT MSGMERGE INTL_MACOSX_LIBS LIBICONV LTLIBICONV INTLLIBS LIBINTL LTLIBINTL POSUB GLIBC2 ALLOCA GLIBC21 HAVE_POSIX_PRINTF HAVE_ASPRINTF HAVE_SNPRINTF HAVE_WPRINTF INTLBISON BUILD_INCLUDED_LIBINTL USE_INCLUDED_LIBINTL CATOBJEXT DATADIRNAME INSTOBJEXT GENCAT INTLOBJS INTL_LIBTOOL_SUFFIX_PREFIX GNOME_INCLUDEDIR GNOMEUI_LIBS GNOME_LIBDIR GNOME_LIBS GNOME_DIR BAT_DIR QWT_INC QWT_LDFLAGS WXCONS_CPPFLAGS WXCONS_LDFLAGS WX_DIR TRAY_MONITOR_CPPFLAGS TRAY_MONITOR_LDFLAGS TRAY_MONITOR_DIR TTOOL_LDFLAGS STATIC_FD STATIC_SD STATIC_DIR STATIC_CONS STATIC_GNOME_CONS STATIC_WX_CONS ALL_DIRS DIRD_DIR DIR_TOOLS STORED_DIR CONS_INC CONS_OBJ CONS_SRC CONS_LIBS CONS_LDFLAGS READLINE_SRC PYTHON_LIBS PYTHON_INCDIR OPENSSL_LIBS OPENSSL_INC working_dir scriptdir dump_email job_email smtp_host piddir subsysdir baseport dir_port fd_port sd_port dir_password fd_password sd_password mon_dir_password mon_fd_password mon_sd_password db_name db_user dir_user dir_group sd_user sd_group fd_user fd_group SBINPERM SQL_LFLAGS SQL_INCLUDE SQL_BINDIR cats DB_TYPE GETCONF ac_ct_GETCONF X_CFLAGS X_PRE_LIBS X_LIBS X_EXTRA_LIBS LIBOBJS FDLIBS DEBUG DINCLUDE DLIB DB_LIBS WCFLAGS WLDFLAGS WRAPLIBS OBJLIST hostname TAPEDRIVE PSCMD WIN32 MACOSX DISTNAME DISTVER LTLIBOBJS' +ac_subst_vars='SHELL PATH_SEPARATOR PACKAGE_NAME PACKAGE_TARNAME PACKAGE_VERSION PACKAGE_STRING PACKAGE_BUGREPORT exec_prefix prefix program_transform_name bindir sbindir libexecdir datadir sysconfdir sharedstatedir localstatedir libdir includedir oldincludedir infodir mandir build_alias host_alias target_alias DEFS ECHO_C ECHO_N ECHO_T LIBS BUILD_DIR TOP_DIR TRUEPRG FALSEPRG VERSION DATE LSMDATE CC CFLAGS LDFLAGS CPPFLAGS ac_ct_CC EXEEXT OBJEXT CXX CXXFLAGS ac_ct_CXX CPP EGREP INSTALL_PROGRAM INSTALL_SCRIPT INSTALL_DATA RANLIB ac_ct_RANLIB MV RM CP SED ECHO CMP TBL AR OPENSSL MTX DD MKISOFS PYTHON GROWISOFS DVDRWMEDIAINFO DVDRWFORMAT PKGCONFIG QMAKE QMAKEQT4 WXCONFIG WXFLAGS CDRECORD PIDOF AWK ARFLAGS MAKE_SHELL LOCAL_LIBS LOCAL_CFLAGS LOCAL_LDFLAGS LOCAL_DEFS build build_cpu build_vendor build_os host host_cpu host_vendor host_os HAVE_SUN_OS_TRUE HAVE_SUN_OS_FALSE HAVE_OSF1_OS_TRUE HAVE_OSF1_OS_FALSE HAVE_AIX_OS_TRUE HAVE_AIX_OS_FALSE HAVE_HPUX_OS_TRUE HAVE_HPUX_OS_FALSE HAVE_LINUX_OS_TRUE HAVE_LINUX_OS_FALSE HAVE_FREEBSD_OS_TRUE HAVE_FREEBSD_OS_FALSE HAVE_NETBSD_OS_TRUE HAVE_NETBSD_OS_FALSE HAVE_OPENBSD_OS_TRUE HAVE_OPENBSD_OS_FALSE HAVE_BSDI_OS_TRUE HAVE_BSDI_OS_FALSE HAVE_SGI_OS_TRUE HAVE_SGI_OS_FALSE HAVE_IRIX_OS_TRUE HAVE_IRIX_OS_FALSE HAVE_DARWIN_OS_TRUE HAVE_DARWIN_OS_FALSE SET_MAKE MKINSTALLDIRS USE_NLS MSGFMT GMSGFMT XGETTEXT MSGMERGE INTL_MACOSX_LIBS LIBICONV LTLIBICONV INTLLIBS LIBINTL LTLIBINTL POSUB GLIBC2 ALLOCA GLIBC21 HAVE_POSIX_PRINTF HAVE_ASPRINTF HAVE_SNPRINTF HAVE_WPRINTF INTLBISON BUILD_INCLUDED_LIBINTL USE_INCLUDED_LIBINTL CATOBJEXT DATADIRNAME INSTOBJEXT GENCAT INTLOBJS INTL_LIBTOOL_SUFFIX_PREFIX GNOME_INCLUDEDIR GNOMEUI_LIBS GNOME_LIBDIR GNOME_LIBS GNOME_DIR BAT_DIR QWT_INC QWT_LDFLAGS WXCONS_CPPFLAGS WXCONS_LDFLAGS WX_DIR TRAY_MONITOR_CPPFLAGS TRAY_MONITOR_LDFLAGS TRAY_MONITOR_DIR TTOOL_LDFLAGS STATIC_FD STATIC_SD STATIC_DIR STATIC_CONS STATIC_GNOME_CONS STATIC_WX_CONS ALL_DIRS DIRD_DIR DIR_TOOLS STORED_DIR CONS_INC CONS_OBJ CONS_SRC CONS_LIBS CONS_LDFLAGS READLINE_SRC PYTHON_LIBS PYTHON_INCDIR OPENSSL_LIBS OPENSSL_INC working_dir scriptdir dump_email job_email smtp_host piddir subsysdir baseport dir_port fd_port sd_port dir_password fd_password sd_password mon_dir_password mon_fd_password mon_sd_password db_name db_user dir_user dir_group sd_user sd_group fd_user fd_group SBINPERM SQL_LFLAGS SQL_INCLUDE SQL_BINDIR cats DB_TYPE GETCONF ac_ct_GETCONF X_CFLAGS X_PRE_LIBS X_LIBS X_EXTRA_LIBS LIBOBJS FDLIBS DEBUG DINCLUDE DLIB DB_LIBS WCFLAGS WLDFLAGS WRAPLIBS OBJLIST hostname TAPEDRIVE PSCMD WIN32 MACOSX DISTNAME DISTVER LTLIBOBJS' ac_subst_files='MCOMMON' # Initialize some variables set by options. @@ -350,8 +350,6 @@ infodir='${prefix}/info' mandir='${prefix}/man' -archivedir='/tmp' - ac_prev= for ac_option do @@ -546,13 +544,6 @@ | --sbi=* | --sb=*) sbindir=$ac_optarg ;; - -archivedir | --archivedir | --archivedi | --archived | --archive | --archiv \ - | --archi | --arch | --arc | --ar | --a) - ac_prev=archivedir ;; - -archivedir=* | --archivedir=* | --archivedi=* | --archived=* | --archive=* \ - | --archiv=* | --archi=* | --arch=* | --arc=* | --ar=* | --a=*) - archivedir=$ac_optarg ;; - -sharedstatedir | --sharedstatedir | --sharedstatedi \ | --sharedstated | --sharedstate | --sharedstat | --sharedsta \ | --sharedst | --shareds | --shared | --share | --shar \ @@ -676,7 +667,7 @@ done # Be sure to have absolute paths. -for ac_var in bindir sbindir libexecdir datadir sysconfdir sharedstatedir archivedir \ +for ac_var in bindir sbindir libexecdir datadir sysconfdir sharedstatedir \ localstatedir libdir includedir oldincludedir infodir mandir do eval ac_val=$`echo $ac_var` @@ -852,7 +843,6 @@ --oldincludedir=DIR C header files for non-gcc [/usr/include] --infodir=DIR info documentation [PREFIX/info] --mandir=DIR man documentation [PREFIX/man] - --archivedir=DIR archive destination for disk-based backups [/tmp] _ACEOF cat <<\_ACEOF @@ -4116,7 +4106,87 @@ echo "${ECHO_T}no" >&6 fi +# Extract the first word of "qmake", so it can be a program name with args. +set dummy qmake; ac_word=$2 +echo "$as_me:$LINENO: checking for $ac_word" >&5 +echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6 +if test "${ac_cv_path_QMAKE+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + case $QMAKE in + [\\/]* | ?:[\\/]*) + ac_cv_path_QMAKE="$QMAKE" # Let the user override the test with a path. + ;; + *) + as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + ac_cv_path_QMAKE="$as_dir/$ac_word$ac_exec_ext" + echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done +done + test -z "$ac_cv_path_QMAKE" && ac_cv_path_QMAKE="none" + ;; +esac +fi +QMAKE=$ac_cv_path_QMAKE + +if test -n "$QMAKE"; then + echo "$as_me:$LINENO: result: $QMAKE" >&5 +echo "${ECHO_T}$QMAKE" >&6 +else + echo "$as_me:$LINENO: result: no" >&5 +echo "${ECHO_T}no" >&6 +fi + +# Extract the first word of "qmake-qt4", so it can be a program name with args. +set dummy qmake-qt4; ac_word=$2 +echo "$as_me:$LINENO: checking for $ac_word" >&5 +echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6 +if test "${ac_cv_path_QMAKEQT4+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + case $QMAKEQT4 in + [\\/]* | ?:[\\/]*) + ac_cv_path_QMAKEQT4="$QMAKEQT4" # Let the user override the test with a path. + ;; + *) + as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + ac_cv_path_QMAKEQT4="$as_dir/$ac_word$ac_exec_ext" + echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done +done + + test -z "$ac_cv_path_QMAKEQT4" && ac_cv_path_QMAKEQT4="none" + ;; +esac +fi +QMAKEQT4=$ac_cv_path_QMAKEQT4 + +if test -n "$QMAKEQT4"; then + echo "$as_me:$LINENO: result: $QMAKEQT4" >&5 +echo "${ECHO_T}$QMAKEQT4" >&6 +else + echo "$as_me:$LINENO: result: no" >&5 +echo "${ECHO_T}no" >&6 +fi + + if test "x$WXCONFIG" = x; then WXCONFIG=wx-config fi @@ -6776,8 +6846,8 @@ # ------------------------------------------------------------------ # If the user has not set --archivedir, we set our default as /tmp # ------------------------------------------------------------------ -if test x$archivedir = x'/tmp' ; then - archivedir=/tmp +if test x$archivedir = x'${archivedir}' ; then + archivedir=${archivedir} fi archivedir=`eval echo ${archivedir}` @@ -19273,6 +19343,9 @@ + + + for ac_header in \ assert.h \ fcntl.h \ @@ -19284,6 +19357,7 @@ stdlib.h \ stdint.h \ string.h \ + strings.h \ termios.h \ termcap.h \ term.h \ @@ -19292,9 +19366,11 @@ sys/byteorder.h \ sys/ioctl.h \ sys/select.h \ + sys/socket.h \ sys/sockio.h \ + sys/stat.h \ sys/time.h \ - sys/socket.h \ + sys/types.h \ arpa/nameser.h \ resolv.h \ mtio.h \ @@ -31173,7 +31249,6 @@ s,@program_transform_name@,$program_transform_name,;t t s,@bindir@,$bindir,;t t s,@sbindir@,$sbindir,;t t -s,@archivedir@,$archivedir,;t t s,@libexecdir@,$libexecdir,;t t s,@datadir@,$datadir,;t t s,@sysconfdir@,$sysconfdir,;t t @@ -31233,6 +31308,8 @@ s,@DVDRWMEDIAINFO@,$DVDRWMEDIAINFO,;t t s,@DVDRWFORMAT@,$DVDRWFORMAT,;t t s,@PKGCONFIG@,$PKGCONFIG,;t t +s,@QMAKE@,$QMAKE,;t t +s,@QMAKEQT4@,$QMAKEQT4,;t t s,@WXCONFIG@,$WXCONFIG,;t t s,@WXFLAGS@,$WXFLAGS,;t t s,@CDRECORD@,$CDRECORD,;t t @@ -32122,10 +32199,23 @@ if test "${support_bat}" = "yes" ; then + if test "x$QMAKE" = "xnone" && test "x$QMAKEQT4" = "xnone"; then + echo "Could not find qmake or qmake-qt4 in $PATH. Check your Qt installation" + exit 1 + fi + + QMAKEBIN="qmake" + + if test "x$QMAKEQT4" != "xnone"; then + QMAKEBIN=qmake-qt4 + fi + + + cd src/qt-console chmod 755 install_conf_file build-depkgs-qt-console echo "Creating bat Makefile" - qmake + $QMAKEBIN cd ${BUILD_DIR} fi Added: branches/Branch-2.2/bacula/patches/2.2.6-mac-build.patch =================================================================== --- branches/Branch-2.2/bacula/patches/2.2.6-mac-build.patch (rev 0) +++ branches/Branch-2.2/bacula/patches/2.2.6-mac-build.patch 2007-11-25 16:12:14 UTC (rev 5984) @@ -0,0 +1,312 @@ + This patch should fix the Mac OS X build problem on the latest + Darwin, where sys/types.h was not included correctly (apparently + due to a change in the Mac headers). The solution was to explicitly + ensure that it is defined for the ./configure. + This patch fixes bug #1020. + + This patch also has a rebuild of configure that includes the Debian + qt4 kludge (look for alternate qt4 names). + + Apply it to 2.2.6 (and possibly previous 2.2.x versions) with: + + cd <bacula-source> + patch -p0 <2.2.6-mac-build.patch + ./configure <your-options> + make + ... + make install + + +Index: configure +=================================================================== +--- configure (revision 5979) ++++ configure (working copy) +@@ -309,7 +309,7 @@ + # include <unistd.h> + #endif" + +-ac_subst_vars='SHELL PATH_SEPARATOR PACKAGE_NAME PACKAGE_TARNAME PACKAGE_VERSION PACKAGE_STRING PACKAGE_BUGREPORT exec_prefix prefix program_transform_name bindir sbindir archivedir libexecdir datadir sysconfdir sharedstatedir localstatedir libdir includedir oldincludedir infodir mandir build_alias host_alias target_alias DEFS ECHO_C ECHO_N ECHO_T LIBS BUILD_DIR TOP_DIR TRUEPRG FALSEPRG VERSION DATE LSMDATE CC CFLAGS LDFLAGS CPPFLAGS ac_ct_CC EXEEXT OBJEXT CXX CXXFLAGS ac_ct_CXX CPP EGREP INSTALL_PROGRAM INSTALL_SCRIPT INSTALL_DATA RANLIB ac_ct_RANLIB MV RM CP SED ECHO CMP TBL AR OPENSSL MTX DD MKISOFS PYTHON GROWISOFS DVDRWMEDIAINFO DVDRWFORMAT PKGCONFIG WXCONFIG WXFLAGS CDRECORD PIDOF AWK ARFLAGS MAKE_SHELL LOCAL_LIBS LOCAL_CFLAGS LOCAL_LDFLAGS LOCAL_DEFS build build_cpu build_vendor build_os host host_cpu host_vendor host_os HAVE_SUN_OS_TRUE HAVE_SUN_OS_FALSE HAVE_OSF1_OS_TRUE HAVE_OSF1_OS_FALSE HAVE_AIX_OS_TRUE HAVE_AIX_OS_FALSE HAVE_HPUX_OS_TRUE HAVE_HPUX_OS_FALSE HAVE_LINUX_OS_TRUE HAVE_LINUX_OS_FALSE HAVE_FREEBSD_OS_TRUE HAVE_FREEBSD_OS_FALSE HAVE_NETBSD_OS_TRUE HAVE_NETBSD_OS_FALSE HAVE_OPENBSD_OS_TRUE HAVE_OPENBSD_OS_FALSE HAVE_BSDI_OS_TRUE HAVE_BSDI_OS_FALSE HAVE_SGI_OS_TRUE HAVE_SGI_OS_FALSE HAVE_IRIX_OS_TRUE HAVE_IRIX_OS_FALSE HAVE_DARWIN_OS_TRUE HAVE_DARWIN_OS_FALSE SET_MAKE MKINSTALLDIRS USE_NLS MSGFMT GMSGFMT XGETTEXT MSGMERGE INTL_MACOSX_LIBS LIBICONV LTLIBICONV INTLLIBS LIBINTL LTLIBINTL POSUB GLIBC2 ALLOCA GLIBC21 HAVE_POSIX_PRINTF HAVE_ASPRINTF HAVE_SNPRINTF HAVE_WPRINTF INTLBISON BUILD_INCLUDED_LIBINTL USE_INCLUDED_LIBINTL CATOBJEXT DATADIRNAME INSTOBJEXT GENCAT INTLOBJS INTL_LIBTOOL_SUFFIX_PREFIX GNOME_INCLUDEDIR GNOMEUI_LIBS GNOME_LIBDIR GNOME_LIBS GNOME_DIR BAT_DIR QWT_INC QWT_LDFLAGS WXCONS_CPPFLAGS WXCONS_LDFLAGS WX_DIR TRAY_MONITOR_CPPFLAGS TRAY_MONITOR_LDFLAGS TRAY_MONITOR_DIR TTOOL_LDFLAGS STATIC_FD STATIC_SD STATIC_DIR STATIC_CONS STATIC_GNOME_CONS STATIC_WX_CONS ALL_DIRS DIRD_DIR DIR_TOOLS STORED_DIR CONS_INC CONS_OBJ CONS_SRC CONS_LIBS CONS_LDFLAGS READLINE_SRC PYTHON_LIBS PYTHON_INCDIR OPENSSL_LIBS OPENSSL_INC working_dir scriptdir dump_email job_email smtp_host piddir subsysdir baseport dir_port fd_port sd_port dir_password fd_password sd_password mon_dir_password mon_fd_password mon_sd_password db_name db_user dir_user dir_group sd_user sd_group fd_user fd_group SBINPERM SQL_LFLAGS SQL_INCLUDE SQL_BINDIR cats DB_TYPE GETCONF ac_ct_GETCONF X_CFLAGS X_PRE_LIBS X_LIBS X_EXTRA_LIBS LIBOBJS FDLIBS DEBUG DINCLUDE DLIB DB_LIBS WCFLAGS WLDFLAGS WRAPLIBS OBJLIST hostname TAPEDRIVE PSCMD WIN32 MACOSX DISTNAME DISTVER LTLIBOBJS' ++ac_subst_vars='SHELL PATH_SEPARATOR PACKAGE_NAME PACKAGE_TARNAME PACKAGE_VERSION PACKAGE_STRING PACKAGE_BUGREPORT exec_prefix prefix program_transform_name bindir sbindir libexecdir datadir sysconfdir sharedstatedir localstatedir libdir includedir oldincludedir infodir mandir build_alias host_alias target_alias DEFS ECHO_C ECHO_N ECHO_T LIBS BUILD_DIR TOP_DIR TRUEPRG FALSEPRG VERSION DATE LSMDATE CC CFLAGS LDFLAGS CPPFLAGS ac_ct_CC EXEEXT OBJEXT CXX CXXFLAGS ac_ct_CXX CPP EGREP INSTALL_PROGRAM INSTALL_SCRIPT INSTALL_DATA RANLIB ac_ct_RANLIB MV RM CP SED ECHO CMP TBL AR OPENSSL MTX DD MKISOFS PYTHON GROWISOFS DVDRWMEDIAINFO DVDRWFORMAT PKGCONFIG QMAKE QMAKEQT4 WXCONFIG WXFLAGS CDRECORD PIDOF AWK ARFLAGS MAKE_SHELL LOCAL_LIBS LOCAL_CFLAGS LOCAL_LDFLAGS LOCAL_DEFS build build_cpu build_vendor build_os host host_cpu host_vendor host_os HAVE_SUN_OS_TRUE HAVE_SUN_OS_FALSE HAVE_OSF1_OS_TRUE HAVE_OSF1_OS_FALSE HAVE_AIX_OS_TRUE HAVE_AIX_OS_FALSE HAVE_HPUX_OS_TRUE HAVE_HPUX_OS_FALSE HAVE_LINUX_OS_TRUE HAVE_LINUX_OS_FALSE HAVE_FREEBSD_OS_TRUE HAVE_FREEBSD_OS_FALSE HAVE_NETBSD_OS_TRUE HAVE_NETBSD_OS_FALSE HAVE_OPENBSD_OS_TRUE HAVE_OPENBSD_OS_FALSE HAVE_BSDI_OS_TRUE HAVE_BSDI_OS_FALSE HAVE_SGI_OS_TRUE HAVE_SGI_OS_FALSE HAVE_IRIX_OS_TRUE HAVE_IRIX_OS_FALSE HAVE_DARWIN_OS_TRUE HAVE_DARWIN_OS_FALSE SET_MAKE MKINSTALLDIRS USE_NLS MSGFMT GMSGFMT XGETTEXT MSGMERGE INTL_MACOSX_LIBS LIBICONV LTLIBICONV INTLLIBS LIBINTL LTLIBINTL POSUB GLIBC2 ALLOCA GLIBC21 HAVE_POSIX_PRINTF HAVE_ASPRINTF HAVE_SNPRINTF HAVE_WPRINTF INTLBISON BUILD_INCLUDED_LIBINTL USE_INCLUDED_LIBINTL CATOBJEXT DATADIRNAME INSTOBJEXT GENCAT INTLOBJS INTL_LIBTOOL_SUFFIX_PREFIX GNOME_INCLUDEDIR GNOMEUI_LIBS GNOME_LIBDIR GNOME_LIBS GNOME_DIR BAT_DIR QWT_INC QWT_LDFLAGS WXCONS_CPPFLAGS WXCONS_LDFLAGS WX_DIR TRAY_MONITOR_CPPFLAGS TRAY_MONITOR_LDFLAGS TRAY_MONITOR_DIR TTOOL_LDFLAGS STATIC_FD STATIC_SD STATIC_DIR STATIC_CONS STATIC_GNOME_CONS STATIC_WX_CONS ALL_DIRS DIRD_DIR DIR_TOOLS STORED_DIR CONS_INC CONS_OBJ CONS_SRC CONS_LIBS CONS_LDFLAGS READLINE_SRC PYTHON_LIBS PYTHON_INCDIR OPENSSL_LIBS OPENSSL_INC working_dir scriptdir dump_email job_email smtp_host piddir subsysdir baseport dir_port fd_port sd_port dir_password fd_password sd_password mon_dir_password mon_fd_password mon_sd_password db_name db_user dir_user dir_group sd_user sd_group fd_user fd_group SBINPERM SQL_LFLAGS SQL_INCLUDE SQL_BINDIR cats DB_TYPE GETCONF ac_ct_GETCONF X_CFLAGS X_PRE_LIBS X_LIBS X_EXTRA_LIBS LIBOBJS FDLIBS DEBUG DINCLUDE DLIB DB_LIBS WCFLAGS WLDFLAGS WRAPLIBS OBJLIST hostname TAPEDRIVE PSCMD WIN32 MACOSX DISTNAME DISTVER LTLIBOBJS' + ac_subst_files='MCOMMON' + + # Initialize some variables set by options. +@@ -350,8 +350,6 @@ + infodir='${prefix}/info' + mandir='${prefix}/man' + +-archivedir='/tmp' +- + ac_prev= + for ac_option + do +@@ -546,13 +544,6 @@ + | --sbi=* | --sb=*) + sbindir=$ac_optarg ;; + +- -archivedir | --archivedir | --archivedi | --archived | --archive | --archiv \ +- | --archi | --arch | --arc | --ar | --a) +- ac_prev=archivedir ;; +- -archivedir=* | --archivedir=* | --archivedi=* | --archived=* | --archive=* \ +- | --archiv=* | --archi=* | --arch=* | --arc=* | --ar=* | --a=*) +- archivedir=$ac_optarg ;; +- + -sharedstatedir | --sharedstatedir | --sharedstatedi \ + | --sharedstated | --sharedstate | --sharedstat | --sharedsta \ + | --sharedst | --shareds | --shared | --share | --shar \ +@@ -676,7 +667,7 @@ + done + + # Be sure to have absolute paths. +-for ac_var in bindir sbindir libexecdir datadir sysconfdir sharedstatedir archivedir \ ++for ac_var in bindir sbindir libexecdir datadir sysconfdir sharedstatedir \ + localstatedir libdir includedir oldincludedir infodir mandir + do + eval ac_val=$`echo $ac_var` +@@ -852,7 +843,6 @@ + --oldincludedir=DIR C header files for non-gcc [/usr/include] + --infodir=DIR info documentation [PREFIX/info] + --mandir=DIR man documentation [PREFIX/man] +- --archivedir=DIR archive destination for disk-based backups [/tmp] + _ACEOF + + cat <<\_ACEOF +@@ -4116,7 +4106,87 @@ + echo "${ECHO_T}no" >&6 + fi + ++# Extract the first word of "qmake", so it can be a program name with args. ++set dummy qmake; ac_word=$2 ++echo "$as_me:$LINENO: checking for $ac_word" >&5 ++echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6 ++if test "${ac_cv_path_QMAKE+set}" = set; then ++ echo $ECHO_N "(cached) $ECHO_C" >&6 ++else ++ case $QMAKE in ++ [\\/]* | ?:[\\/]*) ++ ac_cv_path_QMAKE="$QMAKE" # Let the user override the test with a path. ++ ;; ++ *) ++ as_save_IFS=$IFS; IFS=$PATH_SEPARATOR ++for as_dir in $PATH ++do ++ IFS=$as_save_IFS ++ test -z "$as_dir" && as_dir=. ++ for ac_exec_ext in '' $ac_executable_extensions; do ++ if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ++ ac_cv_path_QMAKE="$as_dir/$ac_word$ac_exec_ext" ++ echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 ++ break 2 ++ fi ++done ++done + ++ test -z "$ac_cv_path_QMAKE" && ac_cv_path_QMAKE="none" ++ ;; ++esac ++fi ++QMAKE=$ac_cv_path_QMAKE ++ ++if test -n "$QMAKE"; then ++ echo "$as_me:$LINENO: result: $QMAKE" >&5 ++echo "${ECHO_T}$QMAKE" >&6 ++else ++ echo "$as_me:$LINENO: result: no" >&5 ++echo "${ECHO_T}no" >&6 ++fi ++ ++# Extract the first word of "qmake-qt4", so it can be a program name with args. ++set dummy qmake-qt4; ac_word=$2 ++echo "$as_me:$LINENO: checking for $ac_word" >&5 ++echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6 ++if test "${ac_cv_path_QMAKEQT4+set}" = set; then ++ echo $ECHO_N "(cached) $ECHO_C" >&6 ++else ++ case $QMAKEQT4 in ++ [\\/]* | ?:[\\/]*) ++ ac_cv_path_QMAKEQT4="$QMAKEQT4" # Let the user override the test with a path. ++ ;; ++ *) ++ as_save_IFS=$IFS; IFS=$PATH_SEPARATOR ++for as_dir in $PATH ++do ++ IFS=$as_save_IFS ++ test -z "$as_dir" && as_dir=. ++ for ac_exec_ext in '' $ac_executable_extensions; do ++ if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ++ ac_cv_path_QMAKEQT4="$as_dir/$ac_word$ac_exec_ext" ++ echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 ++ break 2 ++ fi ++done ++done ++ ++ test -z "$ac_cv_path_QMAKEQT4" && ac_cv_path_QMAKEQT4="none" ++ ;; ++esac ++fi ++QMAKEQT4=$ac_cv_path_QMAKEQT4 ++ ++if test -n "$QMAKEQT4"; then ++ echo "$as_me:$LINENO: result: $QMAKEQT4" >&5 ++echo "${ECHO_T}$QMAKEQT4" >&6 ++else ++ echo "$as_me:$LINENO: result: no" >&5 ++echo "${ECHO_T}no" >&6 ++fi ++ ++ + if test "x$WXCONFIG" = x; then + WXCONFIG=wx-config + fi +@@ -6776,8 +6846,8 @@ + # ------------------------------------------------------------------ + # If the user has not set --archivedir, we set our default as /tmp + # ------------------------------------------------------------------ +-if test x$archivedir = x'/tmp' ; then +- archivedir=/tmp ++if test x$archivedir = x'${archivedir}' ; then ++ archivedir=${archivedir} + fi + archivedir=`eval echo ${archivedir}` + +@@ -19273,6 +19343,9 @@ + + + ++ ++ ++ + for ac_header in \ + assert.h \ + fcntl.h \ +@@ -19284,6 +19357,7 @@ + stdlib.h \ + stdint.h \ + string.h \ ++ strings.h \ + termios.h \ + termcap.h \ + term.h \ +@@ -19292,9 +19366,11 @@ + sys/byteorder.h \ + sys/ioctl.h \ + sys/select.h \ ++ sys/socket.h \ + sys/sockio.h \ ++ sys/stat.h \ + sys/time.h \ +- sys/socket.h \ ++ sys/types.h \ + arpa/nameser.h \ + resolv.h \ + mtio.h \ +@@ -31173,7 +31249,6 @@ + s,@program_transform_name@,$program_transform_name,;t t + s,@bindir@,$bindir,;t t + s,@sbindir@,$sbindir,;t t +-s,@archivedir@,$archivedir,;t t + s,@libexecdir@,$libexecdir,;t t + s,@datadir@,$datadir,;t t + s,@sysconfdir@,$sysconfdir,;t t +@@ -31233,6 +31308,8 @@ + s,@DVDRWMEDIAINFO@,$DVDRWMEDIAINFO,;t t + s,@DVDRWFORMAT@,$DVDRWFORMAT,;t t + s,@PKGCONFIG@,$PKGCONFIG,;t t ++s,@QMAKE@,$QMAKE,;t t ++s,@QMAKEQT4@,$QMAKEQT4,;t t + s,@WXCONFIG@,$WXCONFIG,;t t + s,@WXFLAGS@,$WXFLAGS,;t t + s,@CDRECORD@,$CDRECORD,;t t +@@ -32122,10 +32199,23 @@ + + + if test "${support_bat}" = "yes" ; then ++ if test "x$QMAKE" = "xnone" && test "x$QMAKEQT4" = "xnone"; then ++ echo "Could not find qmake or qmake-qt4 in $PATH. Check your Qt installation" ++ exit 1 ++ fi ++ ++ QMAKEBIN="qmake" ++ ++ if test "x$QMAKEQT4" != "xnone"; then ++ QMAKEBIN=qmake-qt4 ++ fi ++ ++ ++ + cd src/qt-console + chmod 755 install_conf_file build-depkgs-qt-console + echo "Creating bat Makefile" +- qmake ++ $QMAKEBIN + cd ${BUILD_DIR} + fi + +Index: src/bc_types.h +=================================================================== +--- src/bc_types.h (revision 5979) ++++ src/bc_types.h (working copy) +@@ -62,7 +62,7 @@ + + #ifndef HAVE_INTXX_T + # if (SIZEOF_CHAR == 1) +-typedef char int8_t; ++typedef signed char int8_t; + # else + # error "8 bit int type not found." + # endif +Index: patches/2.2.6-queued-msg.patch +=================================================================== +--- patches/2.2.6-queued-msg.patch (revision 0) ++++ patches/2.2.6-queued-msg.patch (revision 0) +@@ -0,0 +1,25 @@ ++ This patch should ensure that queued messages to the console are ++ displayed as soon as possible. It should fix bug 1007, but has been ++ reported not to work. ++ ++ Apply it to version 2.2.6 (or any prior 2.2.x) with: ++ ++ cd <bacula-source> ++ ./configure <your-options> ++ patch -p0 <2.2.6-queued-msg.patch ++ make ++ ... ++ make install ++ ++Index: src/dird/ua_server.c ++=================================================================== ++--- src/dird/ua_server.c (revision 5979) +++++ src/dird/ua_server.c (working copy) ++@@ -146,6 +146,7 @@ ++ } else { ++ do_a_command(ua, ua->cmd); ++ } +++ dequeue_messages(ua->jcr); ++ if (!ua->quit) { ++ if (console_msg_pending && acl_access_ok(ua, Command_ACL, "messages", 8)) { ++ if (ua->auto_display_messages) { +Index: autoconf/configure.in +=================================================================== +--- autoconf/configure.in (revision 5979) ++++ autoconf/configure.in (working copy) +@@ -1394,6 +1394,7 @@ + stdlib.h \ + stdint.h \ + string.h \ ++ strings.h \ + termios.h \ + termcap.h \ + term.h \ +@@ -1402,9 +1403,11 @@ + sys/byteorder.h \ + sys/ioctl.h \ + sys/select.h \ ++ sys/socket.h \ + sys/sockio.h \ ++ sys/stat.h \ + sys/time.h \ +- sys/socket.h \ ++ sys/types.h \ + arpa/nameser.h \ + resolv.h \ + mtio.h \ Added: branches/Branch-2.2/bacula/patches/2.2.6-queued-msg.patch =================================================================== --- branches/Branch-2.2/bacula/patches/2.2.6-queued-msg.patch (rev 0) +++ branches/Branch-2.2/bacula/patches/2.2.6-queued-msg.patch 2007-11-25 16:12:14 UTC (rev 5984) @@ -0,0 +1,25 @@ + This patch should ensure that queued messages to the console are + displayed as soon as possible. It should fix bug 1007, but has been + reported not to work. + + Apply it to version 2.2.6 (or any prior 2.2.x) with: + + cd <bacula-source> + ./configure <your-options> + patch -p0 <2.2.6-queued-msg.patch + make + ... + make install + +Index: src/dird/ua_server.c +=================================================================== +--- src/dird/ua_server.c (revision 5979) ++++ src/dird/ua_server.c (working copy) +@@ -146,6 +146,7 @@ + } else { + do_a_command(ua, ua->cmd); + } ++ dequeue_messages(ua->jcr); + if (!ua->quit) { + if (console_msg_pending && acl_access_ok(ua, Command_ACL, "messages", 8)) { + if (ua->auto_display_messages) { Modified: branches/Branch-2.2/bacula/src/bc_types.h =================================================================== --- branches/Branch-2.2/bacula/src/bc_types.h 2007-11-25 16:02:37 UTC (rev 5983) +++ branches/Branch-2.2/bacula/src/bc_types.h 2007-11-25 16:12:14 UTC (rev 5984) @@ -62,7 +62,7 @@ #ifndef HAVE_INTXX_T # if (SIZEOF_CHAR == 1) -typedef char int8_t; +typedef signed char int8_t; # else # error "8 bit int type not found." # endif Modified: branches/Branch-2.2/bacula/technotes-2.1 =================================================================== --- branches/Branch-2.2/bacula/technotes-2.1 2007-11-25 16:02:37 UTC (rev 5983) +++ branches/Branch-2.2/bacula/technotes-2.1 2007-11-25 16:12:14 UTC (rev 5984) @@ -2,6 +2,13 @@ General: 25Nov07 +kes This patch should fix the Mac OS X build problem on the latest + Darwin, where sys/types.h was not included correctly (apparently + due to a change in the Mac headers). The solution was to explicitly + ensure that it is defined for the ./configure. + This patch also has a rebuild of configure that includes the Debian + qt4 kludge (look for alternate qt4 names). + This patch fixes bug #1020. kes This patch should ensure that queued messages to the console are displayed as soon as possible. It should fix bug 1007, but has been reported not to work. This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <ke...@us...> - 2007-11-25 21:29:06
|
Revision: 5986 http://bacula.svn.sourceforge.net/bacula/?rev=5986&view=rev Author: kerns Date: 2007-11-25 13:29:11 -0800 (Sun, 25 Nov 2007) Log Message: ----------- kes This patch fixes the status command to include the formating string for JS_AttrInsterting. It fixes bug #1021. Modified Paths: -------------- branches/Branch-2.2/bacula/src/dird/ua_status.c branches/Branch-2.2/bacula/technotes-2.1 Added Paths: ----------- branches/Branch-2.2/bacula/patches/2.2.6-status.patch Added: branches/Branch-2.2/bacula/patches/2.2.6-status.patch =================================================================== --- branches/Branch-2.2/bacula/patches/2.2.6-status.patch (rev 0) +++ branches/Branch-2.2/bacula/patches/2.2.6-status.patch 2007-11-25 21:29:11 UTC (rev 5986) @@ -0,0 +1,46 @@ + This patch fixes the status command to include the formating string for + JS_AttrInsterting. It fixes bug #1021. + + Apply it to version 2.2.6 (and possibly earlier versions) with: + + cd <bacula-source> + patch -p0 <2.2.6-status.patch + ./configure <your-options> + make + ... + make install + + +Index: src/dird/ua_status.c +=================================================================== +--- src/dird/ua_status.c (revision 5979) ++++ src/dird/ua_status.c (working copy) +@@ -636,6 +636,12 @@ + case JS_WaitPriority: + msg = _("is waiting for higher priority jobs to finish"); + break; ++ case JS_AttrDespooling: ++ msg = _("SD despooling Attributes"); ++ break; ++ case JS_AttrInserting: ++ msg = _("Dir inserting Attributes"); ++ break; + + default: + emsg = (char *)get_pool_memory(PM_FNAME); +@@ -673,8 +679,14 @@ + Mmsg(emsg, _("is waiting for Client %s to connect to Storage %s"), + jcr->client->name(), jcr->wstore->name()); + } +- msg = emsg; ++ msg = emsg; ++ break; ++ case JS_AttrDespooling: ++ msg = _("SD despooling Attributes"); + break; ++ case JS_AttrInserting: ++ msg = _("Dir inserting Attributes"); ++ break; + } + switch (jcr->JobType) { + case JT_ADMIN: Modified: branches/Branch-2.2/bacula/src/dird/ua_status.c =================================================================== --- branches/Branch-2.2/bacula/src/dird/ua_status.c 2007-11-25 21:22:13 UTC (rev 5985) +++ branches/Branch-2.2/bacula/src/dird/ua_status.c 2007-11-25 21:29:11 UTC (rev 5986) @@ -636,6 +636,12 @@ case JS_WaitPriority: msg = _("is waiting for higher priority jobs to finish"); break; + case JS_AttrDespooling: + msg = _("SD despooling Attributes"); + break; + case JS_AttrInserting: + msg = _("Dir inserting Attributes"); + break; default: emsg = (char *)get_pool_memory(PM_FNAME); @@ -673,8 +679,14 @@ Mmsg(emsg, _("is waiting for Client %s to connect to Storage %s"), jcr->client->name(), jcr->wstore->name()); } - msg = emsg; + msg = emsg; + break; + case JS_AttrDespooling: + msg = _("SD despooling Attributes"); break; + case JS_AttrInserting: + msg = _("Dir inserting Attributes"); + break; } switch (jcr->JobType) { case JT_ADMIN: Modified: branches/Branch-2.2/bacula/technotes-2.1 =================================================================== --- branches/Branch-2.2/bacula/technotes-2.1 2007-11-25 21:22:13 UTC (rev 5985) +++ branches/Branch-2.2/bacula/technotes-2.1 2007-11-25 21:29:11 UTC (rev 5986) @@ -2,6 +2,8 @@ General: 25Nov07 +kes This patch fixes the status command to include the formating string for + JS_AttrInsterting. It fixes bug #1021. kes This patch should fix the Mac OS X build problem on the latest Darwin, where sys/types.h was not included correctly (apparently due to a change in the Mac headers). The solution was to explicitly This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <ke...@us...> - 2007-11-30 21:28:34
|
Revision: 6000 http://bacula.svn.sourceforge.net/bacula/?rev=6000&view=rev Author: kerns Date: 2007-11-30 13:28:39 -0800 (Fri, 30 Nov 2007) Log Message: ----------- This patch fixes bug #1012 where the job is canceled because of Max Run Time exceeded when the job has not yet started. Modified Paths: -------------- branches/Branch-2.2/bacula/src/dird/job.c branches/Branch-2.2/bacula/technotes-2.1 Added Paths: ----------- branches/Branch-2.2/bacula/patches/2.2.6-maxruntime.patch Added: branches/Branch-2.2/bacula/patches/2.2.6-maxruntime.patch =================================================================== --- branches/Branch-2.2/bacula/patches/2.2.6-maxruntime.patch (rev 0) +++ branches/Branch-2.2/bacula/patches/2.2.6-maxruntime.patch 2007-11-30 21:28:39 UTC (rev 6000) @@ -0,0 +1,34 @@ + This patch fixes bug #1012 where the job is canceled because + of Max Run Time exceeded when the job has not yet started. + + Apply it to 2.2.6 or any prior 2.2.x version with: + + cd <bacula-source> + patch -p0 <2.2.6-maxruntime.patch + ./configure <your-options> + make + ... + make install + + +Index: src/dird/job.c +=================================================================== +--- src/dird/job.c (revision 5979) ++++ src/dird/job.c (working copy) +@@ -556,7 +556,7 @@ + */ + static bool job_check_maxruntime(JCR *control_jcr, JCR *jcr) + { +- if (jcr->job->MaxRunTime == 0 || job_canceled(jcr)) { ++ if (jcr->job->MaxRunTime == 0 || job_canceled(jcr) || jcr->JobStatus == JS_Created) { + return false; + } + if ((watchdog_time - jcr->start_time) < jcr->job->MaxRunTime) { +@@ -931,6 +931,7 @@ + { + jcr->job = job; + jcr->JobType = job->JobType; ++ jcr->JobStatus = JS_Created; + switch (jcr->JobType) { + case JT_ADMIN: + case JT_RESTORE: Modified: branches/Branch-2.2/bacula/src/dird/job.c =================================================================== --- branches/Branch-2.2/bacula/src/dird/job.c 2007-11-29 21:36:36 UTC (rev 5999) +++ branches/Branch-2.2/bacula/src/dird/job.c 2007-11-30 21:28:39 UTC (rev 6000) @@ -556,7 +556,7 @@ */ static bool job_check_maxruntime(JCR *control_jcr, JCR *jcr) { - if (jcr->job->MaxRunTime == 0 || job_canceled(jcr)) { + if (jcr->job->MaxRunTime == 0 || job_canceled(jcr) || jcr->JobStatus == JS_Created) { return false; } if ((watchdog_time - jcr->start_time) < jcr->job->MaxRunTime) { @@ -931,6 +931,7 @@ { jcr->job = job; jcr->JobType = job->JobType; + jcr->JobStatus = JS_Created; switch (jcr->JobType) { case JT_ADMIN: case JT_RESTORE: Modified: branches/Branch-2.2/bacula/technotes-2.1 =================================================================== --- branches/Branch-2.2/bacula/technotes-2.1 2007-11-29 21:36:36 UTC (rev 5999) +++ branches/Branch-2.2/bacula/technotes-2.1 2007-11-30 21:28:39 UTC (rev 6000) @@ -1,6 +1,11 @@ Technical notes on version 2.2 General: +30Nov07 +kes This patch fixes bug #1012 where the job is canceled because + of Max Run Time exceeded when the job has not yet started. +27Nov07 +kes Correct typos in disk-changer.in 25Nov07 kes This patch fixes the status command to include the formating string for JS_AttrInsterting. It fixes bug #1021. This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <ke...@us...> - 2007-11-30 21:32:43
|
Revision: 6004 http://bacula.svn.sourceforge.net/bacula/?rev=6004&view=rev Author: kerns Date: 2007-11-30 13:32:48 -0800 (Fri, 30 Nov 2007) Log Message: ----------- Fix --archivedir addition to configure. Replace it with --with-archivedir in configure.in This fixes the regression test builds. Modified Paths: -------------- branches/Branch-2.2/bacula/autoconf/configure.in branches/Branch-2.2/bacula/configure branches/Branch-2.2/bacula/technotes-2.1 Modified: branches/Branch-2.2/bacula/autoconf/configure.in =================================================================== --- branches/Branch-2.2/bacula/autoconf/configure.in 2007-11-30 21:32:13 UTC (rev 6003) +++ branches/Branch-2.2/bacula/autoconf/configure.in 2007-11-30 21:32:48 UTC (rev 6004) @@ -165,13 +165,6 @@ fi sbindir=`eval echo ${sbindir}` -# ------------------------------------------------------------------ -# If the user has not set --archivedir, we set our default as /tmp -# ------------------------------------------------------------------ -if test x$archivedir = x'${archivedir}' ; then - archivedir=${archivedir} -fi -archivedir=`eval echo ${archivedir}` # ------------------------------------------------------------------------- # If the user has not set --mandir, we default to /usr/share/man @@ -949,7 +942,23 @@ AC_SUBST(working_dir) +# ------------------------------------------------------------------ +# If the user has not set archivedir, we set our default as /tmp +# ------------------------------------------------------------------ +archive_dir=/tmp +AC_ARG_WITH(archivedir, + [ --with-archivedir=PATH specify path of SD archive directory], + [ + if test "x$withval" != "xno" ; then + archivedir=$withval + fi + ] +) +AC_SUBST(archivedir) + + + # ------------------------------------------ # Where to place scriptdir (script files) # ------------------------------------------ Modified: branches/Branch-2.2/bacula/configure =================================================================== --- branches/Branch-2.2/bacula/configure 2007-11-30 21:32:13 UTC (rev 6003) +++ branches/Branch-2.2/bacula/configure 2007-11-30 21:32:48 UTC (rev 6004) @@ -309,7 +309,7 @@ # include <unistd.h> #endif" -ac_subst_vars='SHELL PATH_SEPARATOR PACKAGE_NAME PACKAGE_TARNAME PACKAGE_VERSION PACKAGE_STRING PACKAGE_BUGREPORT exec_prefix prefix program_transform_name bindir sbindir libexecdir datadir sysconfdir sharedstatedir localstatedir libdir includedir oldincludedir infodir mandir build_alias host_alias target_alias DEFS ECHO_C ECHO_N ECHO_T LIBS BUILD_DIR TOP_DIR TRUEPRG FALSEPRG VERSION DATE LSMDATE CC CFLAGS LDFLAGS CPPFLAGS ac_ct_CC EXEEXT OBJEXT CXX CXXFLAGS ac_ct_CXX CPP EGREP INSTALL_PROGRAM INSTALL_SCRIPT INSTALL_DATA RANLIB ac_ct_RANLIB MV RM CP SED ECHO CMP TBL AR OPENSSL MTX DD MKISOFS PYTHON GROWISOFS DVDRWMEDIAINFO DVDRWFORMAT PKGCONFIG QMAKE QMAKEQT4 WXCONFIG WXFLAGS CDRECORD PIDOF AWK ARFLAGS MAKE_SHELL LOCAL_LIBS LOCAL_CFLAGS LOCAL_LDFLAGS LOCAL_DEFS build build_cpu build_vendor build_os host host_cpu host_vendor host_os HAVE_SUN_OS_TRUE HAVE_SUN_OS_FALSE HAVE_OSF1_OS_TRUE HAVE_OSF1_OS_FALSE HAVE_AIX_OS_TRUE HAVE_AIX_OS_FALSE HAVE_HPUX_OS_TRUE HAVE_HPUX_OS_FALSE HAVE_LINUX_OS_TRUE HAVE_LINUX_OS_FALSE HAVE_FREEBSD_OS_TRUE HAVE_FREEBSD_OS_FALSE HAVE_NETBSD_OS_TRUE HAVE_NETBSD_OS_FALSE HAVE_OPENBSD_OS_TRUE HAVE_OPENBSD_OS_FALSE HAVE_BSDI_OS_TRUE HAVE_BSDI_OS_FALSE HAVE_SGI_OS_TRUE HAVE_SGI_OS_FALSE HAVE_IRIX_OS_TRUE HAVE_IRIX_OS_FALSE HAVE_DARWIN_OS_TRUE HAVE_DARWIN_OS_FALSE SET_MAKE MKINSTALLDIRS USE_NLS MSGFMT GMSGFMT XGETTEXT MSGMERGE INTL_MACOSX_LIBS LIBICONV LTLIBICONV INTLLIBS LIBINTL LTLIBINTL POSUB GLIBC2 ALLOCA GLIBC21 HAVE_POSIX_PRINTF HAVE_ASPRINTF HAVE_SNPRINTF HAVE_WPRINTF INTLBISON BUILD_INCLUDED_LIBINTL USE_INCLUDED_LIBINTL CATOBJEXT DATADIRNAME INSTOBJEXT GENCAT INTLOBJS INTL_LIBTOOL_SUFFIX_PREFIX GNOME_INCLUDEDIR GNOMEUI_LIBS GNOME_LIBDIR GNOME_LIBS GNOME_DIR BAT_DIR QWT_INC QWT_LDFLAGS WXCONS_CPPFLAGS WXCONS_LDFLAGS WX_DIR TRAY_MONITOR_CPPFLAGS TRAY_MONITOR_LDFLAGS TRAY_MONITOR_DIR TTOOL_LDFLAGS STATIC_FD STATIC_SD STATIC_DIR STATIC_CONS STATIC_GNOME_CONS STATIC_WX_CONS ALL_DIRS DIRD_DIR DIR_TOOLS STORED_DIR CONS_INC CONS_OBJ CONS_SRC CONS_LIBS CONS_LDFLAGS READLINE_SRC PYTHON_LIBS PYTHON_INCDIR OPENSSL_LIBS OPENSSL_INC working_dir scriptdir dump_email job_email smtp_host piddir subsysdir baseport dir_port fd_port sd_port dir_password fd_password sd_password mon_dir_password mon_fd_password mon_sd_password db_name db_user dir_user dir_group sd_user sd_group fd_user fd_group SBINPERM SQL_LFLAGS SQL_INCLUDE SQL_BINDIR cats DB_TYPE GETCONF ac_ct_GETCONF X_CFLAGS X_PRE_LIBS X_LIBS X_EXTRA_LIBS LIBOBJS FDLIBS DEBUG DINCLUDE DLIB DB_LIBS WCFLAGS WLDFLAGS WRAPLIBS OBJLIST hostname TAPEDRIVE PSCMD WIN32 MACOSX DISTNAME DISTVER LTLIBOBJS' +ac_subst_vars='SHELL PATH_SEPARATOR PACKAGE_NAME PACKAGE_TARNAME PACKAGE_VERSION PACKAGE_STRING PACKAGE_BUGREPORT exec_prefix prefix program_transform_name bindir sbindir libexecdir datadir sysconfdir sharedstatedir localstatedir libdir includedir oldincludedir infodir mandir build_alias host_alias target_alias DEFS ECHO_C ECHO_N ECHO_T LIBS BUILD_DIR TOP_DIR TRUEPRG FALSEPRG VERSION DATE LSMDATE CC CFLAGS LDFLAGS CPPFLAGS ac_ct_CC EXEEXT OBJEXT CXX CXXFLAGS ac_ct_CXX CPP EGREP INSTALL_PROGRAM INSTALL_SCRIPT INSTALL_DATA RANLIB ac_ct_RANLIB MV RM CP SED ECHO CMP TBL AR OPENSSL MTX DD MKISOFS PYTHON GROWISOFS DVDRWMEDIAINFO DVDRWFORMAT PKGCONFIG QMAKE QMAKEQT4 WXCONFIG WXFLAGS CDRECORD PIDOF AWK ARFLAGS MAKE_SHELL LOCAL_LIBS LOCAL_CFLAGS LOCAL_LDFLAGS LOCAL_DEFS build build_cpu build_vendor build_os host host_cpu host_vendor host_os HAVE_SUN_OS_TRUE HAVE_SUN_OS_FALSE HAVE_OSF1_OS_TRUE HAVE_OSF1_OS_FALSE HAVE_AIX_OS_TRUE HAVE_AIX_OS_FALSE HAVE_HPUX_OS_TRUE HAVE_HPUX_OS_FALSE HAVE_LINUX_OS_TRUE HAVE_LINUX_OS_FALSE HAVE_FREEBSD_OS_TRUE HAVE_FREEBSD_OS_FALSE HAVE_NETBSD_OS_TRUE HAVE_NETBSD_OS_FALSE HAVE_OPENBSD_OS_TRUE HAVE_OPENBSD_OS_FALSE HAVE_BSDI_OS_TRUE HAVE_BSDI_OS_FALSE HAVE_SGI_OS_TRUE HAVE_SGI_OS_FALSE HAVE_IRIX_OS_TRUE HAVE_IRIX_OS_FALSE HAVE_DARWIN_OS_TRUE HAVE_DARWIN_OS_FALSE SET_MAKE MKINSTALLDIRS USE_NLS MSGFMT GMSGFMT XGETTEXT MSGMERGE INTL_MACOSX_LIBS LIBICONV LTLIBICONV INTLLIBS LIBINTL LTLIBINTL POSUB GLIBC2 ALLOCA GLIBC21 HAVE_POSIX_PRINTF HAVE_ASPRINTF HAVE_SNPRINTF HAVE_WPRINTF INTLBISON BUILD_INCLUDED_LIBINTL USE_INCLUDED_LIBINTL CATOBJEXT DATADIRNAME INSTOBJEXT GENCAT INTLOBJS INTL_LIBTOOL_SUFFIX_PREFIX GNOME_INCLUDEDIR GNOMEUI_LIBS GNOME_LIBDIR GNOME_LIBS GNOME_DIR BAT_DIR QWT_INC QWT_LDFLAGS WXCONS_CPPFLAGS WXCONS_LDFLAGS WX_DIR TRAY_MONITOR_CPPFLAGS TRAY_MONITOR_LDFLAGS TRAY_MONITOR_DIR TTOOL_LDFLAGS STATIC_FD STATIC_SD STATIC_DIR STATIC_CONS STATIC_GNOME_CONS STATIC_WX_CONS ALL_DIRS DIRD_DIR DIR_TOOLS STORED_DIR CONS_INC CONS_OBJ CONS_SRC CONS_LIBS CONS_LDFLAGS READLINE_SRC PYTHON_LIBS PYTHON_INCDIR OPENSSL_LIBS OPENSSL_INC working_dir archivedir scriptdir dump_email job_email smtp_host piddir subsysdir baseport dir_port fd_port sd_port dir_password fd_password sd_password mon_dir_password mon_fd_password mon_sd_password db_name db_user dir_user dir_group sd_user sd_group fd_user fd_group SBINPERM SQL_LFLAGS SQL_INCLUDE SQL_BINDIR cats DB_TYPE GETCONF ac_ct_GETCONF X_CFLAGS X_PRE_LIBS X_LIBS X_EXTRA_LIBS LIBOBJS FDLIBS DEBUG DINCLUDE DLIB DB_LIBS WCFLAGS WLDFLAGS WRAPLIBS OBJLIST hostname TAPEDRIVE PSCMD WIN32 MACOSX DISTNAME DISTVER LTLIBOBJS' ac_subst_files='MCOMMON' # Initialize some variables set by options. @@ -907,6 +907,7 @@ --with-openssl[=DIR] Include OpenSSL support. DIR is the OpenSSL base --with-working-dir=PATH specify path of Bacula working directory + --with-archivedir=PATH specify path of SD archive directory --with-scriptdir=PATH specify path of Bacula scripts directory --with-dump-email=EMAIL dump email address --with-job-email=EMAIL job output email address @@ -6843,13 +6844,6 @@ fi sbindir=`eval echo ${sbindir}` -# ------------------------------------------------------------------ -# If the user has not set --archivedir, we set our default as /tmp -# ------------------------------------------------------------------ -if test x$archivedir = x'${archivedir}' ; then - archivedir=${archivedir} -fi -archivedir=`eval echo ${archivedir}` # ------------------------------------------------------------------------- # If the user has not set --mandir, we default to /usr/share/man @@ -16423,7 +16417,26 @@ +# ------------------------------------------------------------------ +# If the user has not set archivedir, we set our default as /tmp +# ------------------------------------------------------------------ +archive_dir=/tmp +# Check whether --with-archivedir or --without-archivedir was given. +if test "${with_archivedir+set}" = set; then + withval="$with_archivedir" + + if test "x$withval" != "xno" ; then + archivedir=$withval + fi + + +fi; + + + + + # ------------------------------------------ # Where to place scriptdir (script files) # ------------------------------------------ @@ -31419,6 +31432,7 @@ s,@OPENSSL_LIBS@,$OPENSSL_LIBS,;t t s,@OPENSSL_INC@,$OPENSSL_INC,;t t s,@working_dir@,$working_dir,;t t +s,@archivedir@,$archivedir,;t t s,@scriptdir@,$scriptdir,;t t s,@dump_email@,$dump_email,;t t s,@job_email@,$job_email,;t t Modified: branches/Branch-2.2/bacula/technotes-2.1 =================================================================== --- branches/Branch-2.2/bacula/technotes-2.1 2007-11-30 21:32:13 UTC (rev 6003) +++ branches/Branch-2.2/bacula/technotes-2.1 2007-11-30 21:32:48 UTC (rev 6004) @@ -2,6 +2,9 @@ General: 30Nov07 +kes Fix --archivedir addition to configure. Replace it with + --with-archivedir in configure.in This fixes the regression + test builds. kes This patch fixes bug #1012 where the job is canceled because of Max Run Time exceeded when the job has not yet started. 27Nov07 This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <ke...@us...> - 2007-12-02 18:04:09
|
Revision: 6012 http://bacula.svn.sourceforge.net/bacula/?rev=6012&view=rev Author: kerns Date: 2007-12-02 10:04:07 -0800 (Sun, 02 Dec 2007) Log Message: ----------- kes This patch prevents the 'status dir' command from trying to use a scratch volume and possibly moving it from one pool to another. This patch fixes bug #1019. Modified Paths: -------------- branches/Branch-2.2/bacula/src/dird/next_vol.c branches/Branch-2.2/bacula/technotes-2.1 Added Paths: ----------- branches/Branch-2.2/bacula/patches/2.2.6-scratch.patch branches/Branch-2.2/bacula/patches/2.2.x/2.2.4-ansi-label.patch branches/Branch-2.2/bacula/patches/2.2.x/2.2.4-lost-block.patch branches/Branch-2.2/bacula/patches/2.2.x/2.2.4-parse-command.patch branches/Branch-2.2/bacula/patches/2.2.x/2.2.4-poll-mount.patch branches/Branch-2.2/bacula/patches/2.2.x/2.2.4-replace.patch branches/Branch-2.2/bacula/patches/2.2.x/2.2.4-restore.patch branches/Branch-2.2/bacula/patches/2.2.x/2.2.4-sd-auth-fail.patch branches/Branch-2.2/bacula/patches/2.2.x/2.2.4-sql.patch branches/Branch-2.2/bacula/patches/2.2.x/2.2.4-verify.patch branches/Branch-2.2/bacula/patches/2.2.x/2.2.5-deamon.patch branches/Branch-2.2/bacula/patches/2.2.x/2.2.5-hb.patch branches/Branch-2.2/bacula/patches/2.2.x/2.2.5-lastwritten.patch branches/Branch-2.2/bacula/patches/2.2.x/2.2.5-nextvol.patch branches/Branch-2.2/bacula/patches/2.2.x/2.2.5-postgresql-errors.patch branches/Branch-2.2/bacula/patches/2.2.x/2.2.5-tray-monitor.patch branches/Branch-2.2/bacula/patches/2.2.x/2.2.5-verify-loop.patch Removed Paths: ------------- branches/Branch-2.2/bacula/patches/2.2.4-ansi-label.patch branches/Branch-2.2/bacula/patches/2.2.4-lost-block.patch branches/Branch-2.2/bacula/patches/2.2.4-parse-command.patch branches/Branch-2.2/bacula/patches/2.2.4-poll-mount.patch branches/Branch-2.2/bacula/patches/2.2.4-replace.patch branches/Branch-2.2/bacula/patches/2.2.4-restore.patch branches/Branch-2.2/bacula/patches/2.2.4-sd-auth-fail.patch branches/Branch-2.2/bacula/patches/2.2.4-sql.patch branches/Branch-2.2/bacula/patches/2.2.4-verify.patch branches/Branch-2.2/bacula/patches/2.2.5-deamon.patch branches/Branch-2.2/bacula/patches/2.2.5-hb.patch branches/Branch-2.2/bacula/patches/2.2.5-lastwritten.patch branches/Branch-2.2/bacula/patches/2.2.5-nextvol.patch branches/Branch-2.2/bacula/patches/2.2.5-postgresql-errors.patch branches/Branch-2.2/bacula/patches/2.2.5-tray-monitor.patch branches/Branch-2.2/bacula/patches/2.2.5-verify-loop.patch Deleted: branches/Branch-2.2/bacula/patches/2.2.4-ansi-label.patch =================================================================== --- branches/Branch-2.2/bacula/patches/2.2.4-ansi-label.patch 2007-12-02 18:03:17 UTC (rev 6011) +++ branches/Branch-2.2/bacula/patches/2.2.4-ansi-label.patch 2007-12-02 18:04:07 UTC (rev 6012) @@ -1,77 +0,0 @@ - - This patch fixes bug #954. - WEOF on non-appendable error when trying to label a tape with ANSI labels turned on. - - Apply it to version 2.2.4 (possibly earlier versions with): - - cd <bacula-source> - patch -p0 <2.2.4-verify.patch - ./configure (your options) - make - ... - make install - -Index: block.c -=================================================================== ---- src/stored/block.c (revision 5615) -+++ src/stored/block.c (revision 5615) -@@ -273,6 +273,7 @@ - dev->dev_errno = EIO; - Mmsg4(dev->errmsg, _("Volume data error at %u:%u! Wanted ID: \"%s\", got \"%s\". Buffer discarded.\n"), - dev->file, dev->block_num, BLKHDR2_ID, Id); -+ Dmsg1(50, "%s", dev->errmsg); - if (block->read_errors == 0 || verbose >= 2) { - Jmsg(jcr, M_ERROR, 0, "%s", dev->errmsg); - } -@@ -1008,8 +1009,19 @@ - dev->set_ateof(); - return false; /* return eof */ - } -+ - /* Continue here for successful read */ -+ - block->read_len = stat; /* save length read */ -+ if (dev->at_eof() && block->read_len == 80 && -+ (dcr->VolCatInfo.LabelType != B_BACULA_LABEL || -+ dcr->device->label_type != B_BACULA_LABEL)) { -+ /* ***FIXME*** should check label */ -+ Dmsg2(100, "Ignore 80 byte ANSI label at %u:%u\n", dev->file, dev->block_num); -+ dev->clear_eof(); -+ goto reread; /* skip ANSI/IBM label */ -+ } -+ - if (block->read_len < BLKHDR2_LENGTH) { - dev->dev_errno = EIO; - Mmsg4(dev->errmsg, _("Volume data error at %u:%u! Very short block of %d bytes on device %s discarded.\n"), - -Index: label.c -=================================================================== ---- src/stored/label.c (revision 5602) -+++ src/stored/label.c (working copy) -@@ -119,7 +119,6 @@ - bstrncpy(dev->VolHdr.Id, "**error**", sizeof(dev->VolHdr.Id)); - - /* Read ANSI/IBM label if so requested */ -- - want_ansi_label = dcr->VolCatInfo.LabelType != B_BACULA_LABEL || - dcr->device->label_type != B_BACULA_LABEL; - if (want_ansi_label || dev->has_cap(CAP_CHECKLABELS)) { -@@ -344,6 +343,9 @@ - } - } - -+ /* Temporarily mark in append state to enable writing */ -+ dev->set_append(); -+ - /* Create PRE_LABEL or VOL_LABEL if DVD */ - create_volume_label(dev, VolName, PoolName, dvdnow); - -@@ -364,8 +366,6 @@ - create_volume_label_record(dcr, dcr->rec); - dcr->rec->Stream = 0; - -- /* Temporarily mark in append state to enable writing */ -- dev->set_append(); - if (!write_record_to_block(dcr->block, dcr->rec)) { - Dmsg2(130, "Bad Label write on %s: ERR=%s\n", dev->print_name(), dev->print_errmsg()); - goto bail_out; Deleted: branches/Branch-2.2/bacula/patches/2.2.4-lost-block.patch =================================================================== --- branches/Branch-2.2/bacula/patches/2.2.4-lost-block.patch 2007-12-02 18:03:17 UTC (rev 6011) +++ branches/Branch-2.2/bacula/patches/2.2.4-lost-block.patch 2007-12-02 18:04:07 UTC (rev 6012) @@ -1,30 +0,0 @@ - - This patch fixes a race condition where a Job is terminating at the same - time that another job reaches the end of Volume. In that case, sometimes - the last block or two are not written to the Volume. This seems to be - relatively rare, but does result in data loss. This fixes bug #964. - - Apply the patch to Bacula version 2.2.4 (or possibly any previous 2.2.x - version) with: - - cd <bacula-source> - patch -p0 <2.2.4-lost-block.patch - ./configure (your options) - make - ... - make install - - -Index: src/stored/append.c -=================================================================== ---- src/stored/append.c (revision 5602) -+++ src/stored/append.c (working copy) -@@ -287,7 +287,7 @@ - * Check if we can still write. This may not be the case - * if we are at the end of the tape or we got a fatal I/O error. - */ -- if (dev->can_write()) { -+ if (ok || dev->can_write()) { - if (!write_session_label(dcr, EOS_LABEL)) { - Jmsg1(jcr, M_FATAL, 0, _("Error writting end session label. ERR=%s\n"), - dev->bstrerror()); Deleted: branches/Branch-2.2/bacula/patches/2.2.4-parse-command.patch =================================================================== --- branches/Branch-2.2/bacula/patches/2.2.4-parse-command.patch 2007-12-02 18:03:17 UTC (rev 6011) +++ branches/Branch-2.2/bacula/patches/2.2.4-parse-command.patch 2007-12-02 18:04:07 UTC (rev 6012) @@ -1,28 +0,0 @@ - - This patch resolves a command parser issue - causing a director segfault when using something - like "run job 1 2" - - Apply to version 2.2.4 (and perhaps older 2.2.x versions) with - - cd <bacula-source> - patch -p0 <2.2.4-parse-command.patch - ./configure (your options) - make - ... - make install - - -Index: src/dird/ua_run.c -=================================================================== ---- src/dird/ua_run.c (r\xE9vision 5616) -+++ src/dird/ua_run.c (copie de travail) -@@ -933,7 +933,7 @@ - /* Note, yes and run have no value, so do not fail */ - if (!ua->argv[i] && j != YES_POS /*yes*/) { - ua->send_msg(_("Value missing for keyword %s\n"), ua->argk[i]); -- return true; -+ return false; - } - Dmsg1(800, "Got keyword=%s\n", NPRT(kw[j])); - switch (j) { Deleted: branches/Branch-2.2/bacula/patches/2.2.4-poll-mount.patch =================================================================== --- branches/Branch-2.2/bacula/patches/2.2.4-poll-mount.patch 2007-12-02 18:03:17 UTC (rev 6011) +++ branches/Branch-2.2/bacula/patches/2.2.4-poll-mount.patch 2007-12-02 18:04:07 UTC (rev 6012) @@ -1,27 +0,0 @@ - - This patch resolves bug #908 where a tape is not properly mounted - (recognized) during a poll. - - Apply to version 2.2.4 (and perhaps older 2.2.x versions) with - - cd <bacula-source> - patch -p0 <2.2.4-poll-mount.patch - ./configure (your options) - make - ... - make install - -Index: src/stored/dev.c -=================================================================== ---- src/stored/dev.c (revision 5553) -+++ src/stored/dev.c (working copy) -@@ -1844,7 +1844,8 @@ - - /* Clean up device packet so it can be reused */ - clear_opened(); -- state &= ~(ST_LABEL|ST_READ|ST_APPEND|ST_EOT|ST_WEOT|ST_EOF); -+ state &= ~(ST_LABEL|ST_READ|ST_APPEND|ST_EOT|ST_WEOT|ST_EOF| -+ ST_MOUNTED|ST_MEDIA|ST_SHORT|ST_FREESPACE_OK|ST_PART_SPOOLED); - label_type = B_BACULA_LABEL; - file = block_num = 0; - file_size = 0; Deleted: branches/Branch-2.2/bacula/patches/2.2.4-replace.patch =================================================================== --- branches/Branch-2.2/bacula/patches/2.2.4-replace.patch 2007-12-02 18:03:17 UTC (rev 6011) +++ branches/Branch-2.2/bacula/patches/2.2.4-replace.patch 2007-12-02 18:04:07 UTC (rev 6012) @@ -1,24 +0,0 @@ - - This patch resolves bug #969 where the user can't change the - replace option in the restore menu - - Apply to version 2.2.4 (and perhaps older 2.2.x versions) with - - cd <bacula-source> - patch -p0 <2.2.4-replace.patch - ./configure (your options) - make - ... - make install - ---- src/dird/ua_run.c (r\xE9vision 5721) -+++ src/dird/ua_run.c (copie de travail) -@@ -424,6 +424,7 @@ - } - opt = do_prompt(ua, "", _("Select replace option"), NULL, 0); - if (opt >= 0) { -+ rc.replace = ReplaceOptions[opt].name; - jcr->replace = ReplaceOptions[opt].token; - } - goto try_again; - Deleted: branches/Branch-2.2/bacula/patches/2.2.4-restore.patch =================================================================== --- branches/Branch-2.2/bacula/patches/2.2.4-restore.patch 2007-12-02 18:03:17 UTC (rev 6011) +++ branches/Branch-2.2/bacula/patches/2.2.4-restore.patch 2007-12-02 18:04:07 UTC (rev 6012) @@ -1,49 +0,0 @@ - - This patch resolves bug #955 where the director segfault when - where= option isn't specified anywhere. - - Apply to version 2.2.4 (and perhaps older 2.2.x versions) with - - cd <bacula-source> - patch -p0 <2.2.4-restore.patch - ./configure (your options) - make - ... - make install - - -Index: src/dird/restore.c -=================================================================== ---- src/dird/restore.c (revision 5601) -+++ src/dird/restore.c (working copy) -@@ -173,7 +173,7 @@ - } - - /* Send restore command */ -- char replace, *where, *cmd=NULL; -+ char replace, *where, *cmd; - char empty = '\0'; - - if (jcr->replace != 0) { -@@ -183,8 +183,6 @@ - } else { - replace = REPLACE_ALWAYS; /* always replace */ - } -- -- where = ∅ /* default */ - - if (jcr->RegexWhere) { - where = jcr->RegexWhere; /* override */ -@@ -199,7 +197,11 @@ - } else if (jcr->job->RestoreWhere) { - where = jcr->job->RestoreWhere; /* no override take from job */ - cmd = restorecmd; -- } -+ -+ } else { /* nothing was specified */ -+ where = ∅ /* use default */ -+ cmd = restorecmd; -+ } - - jcr->prefix_links = jcr->job->PrefixLinks; - Deleted: branches/Branch-2.2/bacula/patches/2.2.4-sd-auth-fail.patch =================================================================== --- branches/Branch-2.2/bacula/patches/2.2.4-sd-auth-fail.patch 2007-12-02 18:03:17 UTC (rev 6011) +++ branches/Branch-2.2/bacula/patches/2.2.4-sd-auth-fail.patch 2007-12-02 18:04:07 UTC (rev 6012) @@ -1,159 +0,0 @@ - - This patch applies to Bacula version 2.2.4 (possibly earlier 2.2.x versions) - and fixes a Storage daemon authentication problem with the FD. This fixes - bug #953. The patch also adds a bit of additional debug code and significantly - strengthens the SD session key. - - Apply it to 2.2.4 with: - - cd <bacula-source> - patch -p0 <2.2.4-sd-auth-fail.patch - make - ... - make install - - -Index: src/stored/job.c -=================================================================== ---- src/stored/job.c (revision 5602) -+++ src/stored/job.c (working copy) -@@ -73,6 +73,7 @@ - { - int JobId; - char auth_key[100]; -+ char seed[100]; - BSOCK *dir = jcr->dir_bsock; - POOL_MEM job_name, client_name, job, fileset_name, fileset_md5; - int JobType, level, spool_attributes, no_attributes, spool_data; -@@ -91,7 +92,7 @@ - &write_part_after_job, &PreferMountedVols); - if (stat != 13) { - pm_strcpy(jcr->errmsg, dir->msg); -- bnet_fsend(dir, BAD_job, stat, jcr->errmsg); -+ dir->fsend(BAD_job, stat, jcr->errmsg); - Dmsg1(100, ">dird: %s", dir->msg); - set_jcr_job_status(jcr, JS_ErrorTerminated); - return false; -@@ -134,9 +135,10 @@ - /* - * Pass back an authorization key for the File daemon - */ -- make_session_key(auth_key, NULL, 1); -- bnet_fsend(dir, OKjob, jcr->VolSessionId, jcr->VolSessionTime, auth_key); -- Dmsg1(100, ">dird: %s", dir->msg); -+ bsnprintf(seed, sizeof(seed), "%p%d", jcr, JobId); -+ make_session_key(auth_key, seed, 1); -+ dir->fsend(OKjob, jcr->VolSessionId, jcr->VolSessionTime, auth_key); -+ Dmsg2(100, ">dird jid=%u: %s", (uint32_t)jcr->JobId, dir->msg); - jcr->sd_auth_key = bstrdup(auth_key); - memset(auth_key, 0, sizeof(auth_key)); - generate_daemon_event(jcr, "JobStart"); -@@ -169,17 +171,18 @@ - timeout.tv_nsec = tv.tv_usec * 1000; - timeout.tv_sec = tv.tv_sec + me->client_wait; - -- Dmsg2(100, "%s waiting %d sec for FD to contact SD\n", -- jcr->Job, (int)me->client_wait); -+ Dmsg3(050, "%s waiting %d sec for FD to contact SD key=%s\n", -+ jcr->Job, (int)me->client_wait, jcr->sd_auth_key); -+ - /* - * Wait for the File daemon to contact us to start the Job, - * when he does, we will be released, unless the 30 minutes - * expires. - */ - P(mutex); -- for ( ; !job_canceled(jcr); ) { -+ while ( !jcr->authenticated && !job_canceled(jcr) ) { - errstat = pthread_cond_timedwait(&jcr->job_start_wait, &mutex, &timeout); -- if (errstat == 0 || errstat == ETIMEDOUT) { -+ if (errstat == ETIMEDOUT || errstat == EINVAL || errstat == EPERM) { - break; - } - } -@@ -195,7 +198,7 @@ - } - - /* -- * After receiving a connection (in job.c) if it is -+ * After receiving a connection (in dircmd.c) if it is - * from the File daemon, this routine is called. - */ - void handle_filed_connection(BSOCK *fd, char *job_name) -@@ -204,8 +207,8 @@ - - bmicrosleep(0, 50000); /* wait 50 millisecs */ - if (!(jcr=get_jcr_by_full_name(job_name))) { -- Jmsg1(NULL, M_FATAL, 0, _("Job name not found: %s\n"), job_name); -- Dmsg1(100, "Job name not found: %s\n", job_name); -+ Jmsg1(NULL, M_FATAL, 0, _("FD connect failed: Job name not found: %s\n"), job_name); -+ Dmsg1(3, "**** Job \"%s\" not found", job_name); - return; - } - -@@ -216,7 +219,7 @@ - - if (jcr->authenticated) { - Jmsg2(jcr, M_FATAL, 0, _("Hey!!!! JobId %u Job %s already authenticated.\n"), -- jcr->JobId, jcr->Job); -+ (uint32_t)jcr->JobId, jcr->Job); - free_jcr(jcr); - return; - } -@@ -229,7 +232,7 @@ - Jmsg(jcr, M_FATAL, 0, _("Unable to authenticate File daemon\n")); - } else { - jcr->authenticated = true; -- Dmsg1(110, "OK Authentication Job %s\n", jcr->Job); -+ Dmsg2(110, "OK Authentication jid=%u Job %s\n", (uint32_t)jcr->JobId, jcr->Job); - } - - if (!jcr->authenticated) { -@@ -274,9 +277,9 @@ - } - ok = dir_update_device(jcr, device->dev); - if (ok) { -- ok = bnet_fsend(dir, OK_query); -+ ok = dir->fsend(OK_query); - } else { -- bnet_fsend(dir, NO_query); -+ dir->fsend(NO_query); - } - return ok; - } -@@ -289,9 +292,9 @@ - } - ok = dir_update_changer(jcr, changer); - if (ok) { -- ok = bnet_fsend(dir, OK_query); -+ ok = dir->fsend(OK_query); - } else { -- bnet_fsend(dir, NO_query); -+ dir->fsend(NO_query); - } - return ok; - } -@@ -299,12 +302,12 @@ - /* If we get here, the device/autochanger was not found */ - unbash_spaces(dir->msg); - pm_strcpy(jcr->errmsg, dir->msg); -- bnet_fsend(dir, NO_device, dev_name.c_str()); -+ dir->fsend(NO_device, dev_name.c_str()); - Dmsg1(100, ">dird: %s\n", dir->msg); - } else { - unbash_spaces(dir->msg); - pm_strcpy(jcr->errmsg, dir->msg); -- bnet_fsend(dir, BAD_query, jcr->errmsg); -+ dir->fsend(BAD_query, jcr->errmsg); - Dmsg1(100, ">dird: %s\n", dir->msg); - } - -@@ -322,7 +325,7 @@ - { - Dmsg1(900, "stored_free_jcr JobId=%u\n", jcr->JobId); - if (jcr->file_bsock) { -- bnet_close(jcr->file_bsock); -+ jcr->file_bsock->close(); - jcr->file_bsock = NULL; - } - if (jcr->job_name) { Deleted: branches/Branch-2.2/bacula/patches/2.2.4-sql.patch =================================================================== --- branches/Branch-2.2/bacula/patches/2.2.4-sql.patch 2007-12-02 18:03:17 UTC (rev 6011) +++ branches/Branch-2.2/bacula/patches/2.2.4-sql.patch 2007-12-02 18:04:07 UTC (rev 6012) @@ -1,476 +0,0 @@ - - This patch fixes several problems: it fixes incorrect or incomplete error - messages; it fixes a problem opening the SQLite3 database when multiple - simultaneous jobs were running; it fixes a bug with certain versions of - MySQL where batch inserts failed because of table name character case - (upper/lower) differences. - - It can be applied to version 2.2.4 (and possibly earlier 2.2.x versions) - with: - - cd <bacula-source> - patch -p0 <2.2.4-sql.patch - ./configure (your options) - make - ... - make install - - - -Index: src/cats/sql.c -=================================================================== ---- src/cats/sql.c (revision 5687) -+++ src/cats/sql.c (working copy) -@@ -115,7 +115,6 @@ - - bacula_db_version = 0; - if (!db_sql_query(mdb, query, int_handler, (void *)&bacula_db_version)) { -- Mmsg(mdb->errmsg, "Database not created or server not running.\n"); - Jmsg(jcr, M_FATAL, 0, "%s", mdb->errmsg); - return false; - } -Index: src/cats/sqlite.c -=================================================================== ---- src/cats/sqlite.c (revision 5687) -+++ src/cats/sqlite.c (working copy) -@@ -148,6 +148,7 @@ - int len; - struct stat statbuf; - int errstat; -+ int retry = 0; - - P(mutex); - if (mdb->connected) { -@@ -157,8 +158,9 @@ - mdb->connected = FALSE; - - if ((errstat=rwl_init(&mdb->lock)) != 0) { -+ berrno be; - Mmsg1(&mdb->errmsg, _("Unable to initialize DB lock. ERR=%s\n"), -- strerror(errstat)); -+ be.bstrerror(errstat)); - V(mutex); - return 0; - } -@@ -178,28 +180,28 @@ - return 0; - } - -+ for (mdb->db=NULL; !mdb->db && retry++ < 10; ) { - #ifdef HAVE_SQLITE3 -- int stat = sqlite3_open(db_name, &mdb->db); -- if (stat != SQLITE_OK) { -- mdb->sqlite_errmsg = (char *)sqlite3_errmsg(mdb->db); -- sqlite3_close(mdb->db); -- mdb->db = NULL; -- } else { -- mdb->sqlite_errmsg = NULL; -- } --#ifdef SQLITE3_INIT_QUERY -- db_sql_query(mdb, SQLITE3_INIT_QUERY, NULL, NULL); --#endif -- -+ int stat = sqlite3_open(db_name, &mdb->db); -+ if (stat != SQLITE_OK) { -+ mdb->sqlite_errmsg = (char *)sqlite3_errmsg(mdb->db); -+ sqlite3_close(mdb->db); -+ mdb->db = NULL; -+ } else { -+ mdb->sqlite_errmsg = NULL; -+ } - #else -- mdb->db = sqlite_open( -- db_name, /* database name */ -- 644, /* mode */ -- &mdb->sqlite_errmsg); /* error message */ -+ mdb->db = sqlite_open( -+ db_name, /* database name */ -+ 644, /* mode */ -+ &mdb->sqlite_errmsg); /* error message */ - #endif - -- Dmsg0(300, "sqlite_open\n"); -- -+ Dmsg0(300, "sqlite_open\n"); -+ if (!mdb->db) { -+ bmicrosleep(1, 0); -+ } -+ } - if (mdb->db == NULL) { - Mmsg2(&mdb->errmsg, _("Unable to open Database=%s. ERR=%s\n"), - db_name, mdb->sqlite_errmsg ? mdb->sqlite_errmsg : _("unknown")); -@@ -209,10 +211,6 @@ - } - mdb->connected = true; - free(db_name); -- if (!check_tables_version(jcr, mdb)) { -- V(mutex); -- return 0; -- } - - /* set busy handler to wait when we use mult_db_connections = 1 */ - #ifdef HAVE_SQLITE3 -@@ -221,6 +219,16 @@ - sqlite_busy_handler(mdb->db, my_busy_handler, NULL); - #endif - -+#if defined(HAVE_SQLITE3) && defined(SQLITE3_INIT_QUERY) -+ db_sql_query(mdb, SQLITE3_INIT_QUERY, NULL, NULL); -+#endif -+ -+ if (!check_tables_version(jcr, mdb)) { -+ V(mutex); -+ return 0; -+ } -+ -+ - V(mutex); - return 1; - } -@@ -448,16 +456,20 @@ - return mdb->fields[mdb->field++]; - } - --char *my_sqlite_batch_lock_query = "BEGIN"; --char *my_sqlite_batch_unlock_query = "COMMIT"; --char *my_sqlite_batch_fill_path_query = "INSERT INTO Path (Path) " -- " SELECT DISTINCT Path FROM batch " -- " EXCEPT SELECT Path FROM Path "; -+#ifdef HAVE_BATCH_FILE_INSERT -+const char *my_sqlite_batch_lock_query = "BEGIN"; -+const char *my_sqlite_batch_unlock_query = "COMMIT"; - --char *my_sqlite_batch_fill_filename_query = "INSERT INTO Filename (Name) " -- " SELECT DISTINCT Name FROM batch " -- " EXCEPT SELECT Name FROM Filename "; -+const char *my_sqlite_batch_fill_path_query = -+ "INSERT INTO Path (Path)" -+ " SELECT DISTINCT Path FROM batch" -+ " EXCEPT SELECT Path FROM Path"; - -+const char *my_sqlite_batch_fill_filename_query = -+ "INSERT INTO Filename (Name)" -+ " SELECT DISTINCT Name FROM batch " -+ " EXCEPT SELECT Name FROM Filename"; -+#endif /* HAVE_BATCH_FILE_INSERT */ - - - #endif /* HAVE_SQLITE */ -Index: src/cats/cats.h -=================================================================== ---- src/cats/cats.h (revision 5687) -+++ src/cats/cats.h (working copy) -@@ -187,10 +187,10 @@ - int my_sqlite_query(B_DB *mdb, const char *cmd); - void my_sqlite_field_seek(B_DB *mdb, int field); - SQL_FIELD *my_sqlite_fetch_field(B_DB *mdb); --extern char* my_sqlite_batch_lock_query; --extern char* my_sqlite_batch_unlock_query; --extern char* my_sqlite_batch_fill_filename_query; --extern char* my_sqlite_batch_fill_path_query; -+extern const char* my_sqlite_batch_lock_query; -+extern const char* my_sqlite_batch_unlock_query; -+extern const char* my_sqlite_batch_fill_filename_query; -+extern const char* my_sqlite_batch_fill_path_query; - - - #else -@@ -317,10 +317,10 @@ - int my_sqlite_query(B_DB *mdb, const char *cmd); - void my_sqlite_field_seek(B_DB *mdb, int field); - SQL_FIELD *my_sqlite_fetch_field(B_DB *mdb); --extern char* my_sqlite_batch_lock_query; --extern char* my_sqlite_batch_unlock_query; --extern char* my_sqlite_batch_fill_filename_query; --extern char* my_sqlite_batch_fill_path_query; -+extern const char* my_sqlite_batch_lock_query; -+extern const char* my_sqlite_batch_unlock_query; -+extern const char* my_sqlite_batch_fill_filename_query; -+extern const char* my_sqlite_batch_fill_path_query; - - - #else -@@ -398,11 +398,11 @@ - #define sql_batch_fill_path_query my_mysql_batch_fill_path_query - - --extern char* my_mysql_batch_lock_path_query; --extern char* my_mysql_batch_lock_filename_query; --extern char* my_mysql_batch_unlock_tables_query; --extern char* my_mysql_batch_fill_filename_query; --extern char* my_mysql_batch_fill_path_query; -+extern const char* my_mysql_batch_lock_path_query; -+extern const char* my_mysql_batch_lock_filename_query; -+extern const char* my_mysql_batch_unlock_tables_query; -+extern const char* my_mysql_batch_fill_filename_query; -+extern const char* my_mysql_batch_fill_path_query; - extern void my_mysql_free_result(B_DB *mdb); - - #else -@@ -486,11 +486,11 @@ - int my_postgresql_batch_insert(JCR *jcr, B_DB *mdb, ATTR_DBR *ar); - char *my_postgresql_copy_escape(char *dest, char *src, size_t len); - --extern char* my_pg_batch_lock_path_query; --extern char* my_pg_batch_lock_filename_query; --extern char* my_pg_batch_unlock_tables_query; --extern char* my_pg_batch_fill_filename_query; --extern char* my_pg_batch_fill_path_query; -+extern const char* my_pg_batch_lock_path_query; -+extern const char* my_pg_batch_lock_filename_query; -+extern const char* my_pg_batch_unlock_tables_query; -+extern const char* my_pg_batch_fill_filename_query; -+extern const char* my_pg_batch_fill_path_query; - - /* "Generic" names for easier conversion */ - #define sql_store_result(x) ((x)->result) -Index: src/cats/mysql.c -=================================================================== ---- src/cats/mysql.c (revision 5687) -+++ src/cats/mysql.c (working copy) -@@ -149,8 +149,9 @@ - } - - if ((errstat=rwl_init(&mdb->lock)) != 0) { -+ berrno be; - Mmsg1(&mdb->errmsg, _("Unable to initialize DB lock. ERR=%s\n"), -- strerror(errstat)); -+ be.bstrerror(errstat)); - V(mutex); - return 0; - } -@@ -403,33 +404,27 @@ - db_unlock(mdb); - } - --char *my_mysql_batch_lock_path_query = "LOCK TABLES Path write, " -- " batch write, " -- " Path as p write "; -+#ifdef HAVE_BATCH_FILE_INSERT -+const char *my_mysql_batch_lock_path_query = -+ "LOCK TABLES Path write, batch write, Path as p write"; - - --char *my_mysql_batch_lock_filename_query = "LOCK TABLES Filename write, " -- " batch write, " -- " Filename as f write "; -+const char *my_mysql_batch_lock_filename_query = -+ "LOCK TABLES Filename write, batch write, Filename as f write"; - --char *my_mysql_batch_unlock_tables_query = "UNLOCK TABLES"; -+const char *my_mysql_batch_unlock_tables_query = "UNLOCK TABLES"; - --char *my_mysql_batch_fill_path_query = "INSERT INTO Path (Path) " -- " SELECT a.Path FROM " -- " (SELECT DISTINCT Path " -- " FROM batch) AS a " -- " WHERE NOT EXISTS " -- " (SELECT Path " -- " FROM Path AS p " -- " WHERE p.Path = a.Path) "; -+const char *my_mysql_batch_fill_path_query = -+ "INSERT INTO Path (Path) " -+ "SELECT a.Path FROM " -+ "(SELECT DISTINCT Path FROM batch) AS a WHERE NOT EXISTS " -+ "(SELECT Path FROM Path AS p WHERE p.Path = a.Path)"; - --char *my_mysql_batch_fill_filename_query = "INSERT INTO Filename (Name) " -- " SELECT a.Name FROM " -- " (SELECT DISTINCT Name " -- " FROM batch) AS a " -- " WHERE NOT EXISTS " -- " (SELECT Name " -- " FROM Filename AS f " -- " WHERE f.Name = a.Name) "; -+const char *my_mysql_batch_fill_filename_query = -+ "INSERT INTO Filename (Name) " -+ "SELECT a.Name FROM " -+ "(SELECT DISTINCT Name FROM batch) AS a WHERE NOT EXISTS " -+ "(SELECT Name FROM Filename AS f WHERE f.Name = a.Name)"; -+#endif /* HAVE_BATCH_FILE_INSERT */ - - #endif /* HAVE_MYSQL */ -Index: src/cats/sql_create.c -=================================================================== ---- src/cats/sql_create.c (revision 5687) -+++ src/cats/sql_create.c (working copy) -@@ -668,6 +668,8 @@ - * }; - */ - -+#ifdef HAVE_BATCH_FILE_INSERT -+ - /* All sql_batch_* functions are used to do bulk batch insert in File/Filename/Path - * tables. This code can be activated by adding "#define HAVE_BATCH_FILE_INSERT 1" - * in baconfig.h -@@ -690,13 +692,13 @@ - - db_lock(mdb); - ok = db_sql_query(mdb, -- " CREATE TEMPORARY TABLE batch " -- " (fileindex integer, " -- " jobid integer, " -- " path blob, " -- " name blob, " -- " lstat tinyblob, " -- " md5 tinyblob) ",NULL, NULL); -+ "CREATE TEMPORARY TABLE batch (" -+ "FileIndex integer," -+ "JobId integer," -+ "Path blob," -+ "Name blob," -+ "LStat tinyblob," -+ "MD5 tinyblob)",NULL, NULL); - db_unlock(mdb); - return ok; - } -@@ -746,7 +748,6 @@ - return true; - } - --#ifdef HAVE_BATCH_FILE_INSERT - /* - * Returns 1 if OK - * 0 if failed -@@ -794,7 +795,7 @@ - - if (!db_sql_query(jcr->db_batch,sql_batch_fill_filename_query, NULL,NULL)) { - Jmsg(jcr,M_FATAL,0,"Can't fill Filename table %s\n",jcr->db_batch->errmsg); -- QUERY_DB(jcr, jcr->db_batch, sql_batch_unlock_tables_query); -+ db_sql_query(jcr->db_batch, sql_batch_unlock_tables_query, NULL, NULL); - return false; - } - -@@ -804,12 +805,12 @@ - } - - if (!db_sql_query(jcr->db_batch, -- " INSERT INTO File (FileIndex, JobId, PathId, FilenameId, LStat, MD5)" -- " SELECT batch.FileIndex, batch.JobId, Path.PathId, " -- " Filename.FilenameId,batch.LStat, batch.MD5 " -- " FROM batch " -- " JOIN Path ON (batch.Path = Path.Path) " -- " JOIN Filename ON (batch.Name = Filename.Name) ", -+ "INSERT INTO File (FileIndex, JobId, PathId, FilenameId, LStat, MD5)" -+ "SELECT batch.FileIndex, batch.JobId, Path.PathId, " -+ "Filename.FilenameId,batch.LStat, batch.MD5 " -+ "FROM batch " -+ "JOIN Path ON (batch.Path = Path.Path) " -+ "JOIN Filename ON (batch.Name = Filename.Name)", - NULL,NULL)) - { - Jmsg(jcr, M_FATAL, 0, "Can't fill File table %s\n", jcr->db_batch->errmsg); -@@ -845,19 +846,24 @@ - mdb->db_port, - mdb->db_socket, - 1 /* multi_db = true */); -+ if (!jcr->db_batch) { -+ Mmsg1(&mdb->errmsg, _("Could not init batch database: \"%s\".\n"), -+ jcr->db->db_name); -+ Jmsg1(jcr, M_FATAL, 0, "%s", mdb->errmsg); -+ return false; -+ } - -- if (!jcr->db_batch || !db_open_database(jcr, jcr->db_batch)) { -- Jmsg(jcr, M_FATAL, 0, _("Could not open database \"%s\".\n"), -- jcr->db->db_name); -- if (jcr->db_batch) { -- Jmsg(jcr, M_FATAL, 0, "%s", db_strerror(jcr->db_batch)); -- } -+ if (!db_open_database(jcr, jcr->db_batch)) { -+ Mmsg2(&mdb->errmsg, _("Could not open database \"%s\": ERR=%s\n"), -+ jcr->db->db_name, db_strerror(jcr->db_batch)); -+ Jmsg1(jcr, M_FATAL, 0, "%s", mdb->errmsg); - return false; - } - - if (!sql_batch_start(jcr, jcr->db_batch)) { -- Jmsg(jcr, M_FATAL, 0, -- "Can't start batch mode %s", db_strerror(jcr->db_batch)); -+ Mmsg1(&mdb->errmsg, -+ "Can't start batch mode: ERR=%s", db_strerror(jcr->db_batch)); -+ Jmsg1(jcr, M_FATAL, 0, "%s", mdb->errmsg); - return false; - } - Dmsg3(100, "initdb ref=%d connected=%d db=%p\n", jcr->db_batch->ref_count, -@@ -870,10 +876,10 @@ - */ - if (!(ar->Stream == STREAM_UNIX_ATTRIBUTES || - ar->Stream == STREAM_UNIX_ATTRIBUTES_EX)) { -- Mmsg1(&bdb->errmsg, _("Attempt to put non-attributes into catalog. Stream=%d\n"), -+ Mmsg1(&mdb->errmsg, _("Attempt to put non-attributes into catalog. Stream=%d\n"), - ar->Stream); -- Jmsg(jcr, M_ERROR, 0, "%s", bdb->errmsg); -- return 0; -+ Jmsg(jcr, M_FATAL, 0, "%s", mdb->errmsg); -+ return false; - } - - split_path_and_file(jcr, bdb, ar->fname); -Index: src/cats/postgresql.c -=================================================================== ---- src/cats/postgresql.c (revision 5687) -+++ src/cats/postgresql.c (working copy) -@@ -605,13 +605,13 @@ - Dmsg0(500, "my_postgresql_batch_start started\n"); - - if (my_postgresql_query(mdb, -- " CREATE TEMPORARY TABLE batch " -- " (fileindex int, " -- " jobid int, " -- " path varchar, " -- " name varchar, " -- " lstat varchar, " -- " md5 varchar)") == 1) -+ "CREATE TEMPORARY TABLE batch (" -+ "fileindex int," -+ "jobid int," -+ "path varchar," -+ "name varchar," -+ "lstat varchar," -+ "md5 varchar)") == 1) - { - Dmsg0(500, "my_postgresql_batch_start failed\n"); - return 1; -@@ -785,22 +785,29 @@ - return dest; - } - --char *my_pg_batch_lock_path_query = "BEGIN; LOCK TABLE Path IN SHARE ROW EXCLUSIVE MODE"; -+#ifdef HAVE_BATCH_FILE_INSERT -+const char *my_pg_batch_lock_path_query = -+ "BEGIN; LOCK TABLE Path IN SHARE ROW EXCLUSIVE MODE"; - - --char *my_pg_batch_lock_filename_query = "BEGIN; LOCK TABLE Filename IN SHARE ROW EXCLUSIVE MODE"; -+const char *my_pg_batch_lock_filename_query = -+ "BEGIN; LOCK TABLE Filename IN SHARE ROW EXCLUSIVE MODE"; - --char *my_pg_batch_unlock_tables_query = "COMMIT"; -+const char *my_pg_batch_unlock_tables_query = "COMMIT"; - --char *my_pg_batch_fill_path_query = "INSERT INTO Path (Path) " -- " SELECT a.Path FROM " -- " (SELECT DISTINCT Path FROM batch) AS a " -- " WHERE NOT EXISTS (SELECT Path FROM Path WHERE Path = a.Path) "; -+const char *my_pg_batch_fill_path_query = -+ "INSERT INTO Path (Path) " -+ "SELECT a.Path FROM " -+ "(SELECT DISTINCT Path FROM batch) AS a " -+ "WHERE NOT EXISTS (SELECT Path FROM Path WHERE Path = a.Path) "; - - --char *my_pg_batch_fill_filename_query = "INSERT INTO Filename (Name) " -- " SELECT a.Name FROM " -- " (SELECT DISTINCT Name FROM batch) as a " -- " WHERE NOT EXISTS " -- " (SELECT Name FROM Filename WHERE Name = a.Name)"; -+const char *my_pg_batch_fill_filename_query = -+ "INSERT INTO Filename (Name) " -+ "SELECT a.Name FROM " -+ "(SELECT DISTINCT Name FROM batch) as a " -+ "WHERE NOT EXISTS " -+ "(SELECT Name FROM Filename WHERE Name = a.Name)"; -+#endif /* HAVE_BATCH_FILE_INSERT */ -+ - #endif /* HAVE_POSTGRESQL */ Deleted: branches/Branch-2.2/bacula/patches/2.2.4-verify.patch =================================================================== --- branches/Branch-2.2/bacula/patches/2.2.4-verify.patch 2007-12-02 18:03:17 UTC (rev 6011) +++ branches/Branch-2.2/bacula/patches/2.2.4-verify.patch 2007-12-02 18:04:07 UTC (rev 6012) @@ -1,75 +0,0 @@ - This patch fixes bug #958 A Verify catalog Job that has differences reports Verify OK. - - Apply it to version 2.2.4 (possibly earlier versions with): - - cd <bacula-source> - patch -p0 <2.2.4-verify.patch - ./configure (your options) - make - ... - make install - -Index: src/dird/verify.c -=================================================================== ---- src/dird/verify.c (revision 5553) -+++ src/dird/verify.c (working copy) -@@ -332,13 +332,10 @@ - } - - stat = wait_for_job_termination(jcr); -- if (stat == JS_Terminated) { -- verify_cleanup(jcr, stat); -- return true; -- } -+ verify_cleanup(jcr, stat); -+ return true; - - bail_out: -- verify_cleanup(jcr, JS_ErrorTerminated); - return false; - } - -@@ -421,7 +418,7 @@ - jobstatus_to_ascii(jcr->FDJobStatus, fd_term_msg, sizeof(fd_term_msg)); - if (jcr->JobLevel == L_VERIFY_VOLUME_TO_CATALOG) { - jobstatus_to_ascii(jcr->SDJobStatus, sd_term_msg, sizeof(sd_term_msg)); -- Jmsg(jcr, msg_type, 0, _("Bacula %s %s (%s): %s\n" -+ Jmsg(jcr, msg_type, 0, _("Bacula %s %s (%s): %s\n" - " Build OS: %s %s %s\n" - " JobId: %d\n" - " Job: %s\n" -@@ -456,7 +453,7 @@ - sd_term_msg, - term_msg); - } else { -- Jmsg(jcr, msg_type, 0, _("Bacula %s %s (%s): %s\n" -+ Jmsg(jcr, msg_type, 0, _("Bacula %s %s (%s): %s\n" - " Build: %s %s %s\n" - " JobId: %d\n" - " Job: %s\n" -@@ -750,7 +747,9 @@ - stat = JS_Differences; - } - free_pool_memory(fname); -- set_jcr_job_status(jcr, stat); -+ if (!job_canceled(jcr)) { -+ jcr->JobStatus = stat; -+ } - return stat == JS_Terminated; - } - -Index: src/lib/jcr.c -=================================================================== ---- src/lib/jcr.c (revision 5553) -+++ src/lib/jcr.c (working copy) -@@ -614,9 +614,8 @@ - /* Override more minor status */ - jcr->JobStatus = JobStatus; - break; -- default: -- break; - } -+ break; - default: - jcr->JobStatus = JobStatus; - } Deleted: branches/Branch-2.2/bacula/patches/2.2.5-deamon.patch =================================================================== --- branches/Branch-2.2/bacula/patches/2.2.5-deamon.patch 2007-12-02 18:03:17 UTC (rev 6011) +++ branches/Branch-2.2/bacula/patches/2.2.5-deamon.patch 2007-12-02 18:04:07 UTC (rev 6012) @@ -1,40 +0,0 @@ - - This patch fixes the default behavior of a non-DEVELOPER version of Bacula - to close STDIN, STDOUT, and STDERR so that an ssh that starts bacula - will not hang. It also fixes a crash in bat when bat is executed and - cannot connect to the Director (e.g. it is not running). - This patch fixes bugs #991 and #993. - - Apply this fix to Bacula version 2.2.5 with: - - cd <bacula-source> - patch -p0 <2.2.5-daemon.patch - ./configure (your options) - make - ... - make install - - -Index: src/lib/message.c -=================================================================== ---- src/lib/message.c (revision 5744) -+++ src/lib/message.c (working copy) -@@ -52,7 +52,8 @@ - */ - const char *working_directory = NULL; /* working directory path stored here */ - int verbose = 0; /* increase User messages */ --int debug_level = 1; /* debug level */ -+/* Keep debug level set to zero by default */ -+int debug_level = 0; /* debug level */ - time_t daemon_start_time = 0; /* Daemon start time */ - const char *version = VERSION " (" BDATE ")"; - char my_name[30]; /* daemon name is stored here */ -@@ -1338,7 +1339,7 @@ - jcr = get_jcr_from_tsd(); - } - /* If no jcr or dequeuing send to daemon to avoid recursion */ -- if (!jcr || jcr->dequeuing) { -+ if ((jcr && !jcr->msg_queue) || !jcr || jcr->dequeuing) { - /* jcr==NULL => daemon message, safe to send now */ - Jmsg(jcr, item->type, item->mtime, "%s", item->msg); - free(item); Deleted: branches/Branch-2.2/bacula/patches/2.2.5-hb.patch =================================================================== --- branches/Branch-2.2/bacula/patches/2.2.5-hb.patch 2007-12-02 18:03:17 UTC (rev 6011) +++ branches/Branch-2.2/bacula/patches/2.2.5-hb.patch 2007-12-02 18:04:07 UTC (rev 6012) @@ -1,186 +0,0 @@ - - This patch fixes bug #947 where a large number of emails were generated - because the heartbeat interval was small and the tape in the drive did - not correspond to the one wanted by Bacula. - - Apply the patch to version 2.2.5 (and probably any 2.2.x version) with: - - cd <bacula-source> - ./configure <your options> - patch -p0 <2.2.5-hb.patch - make - ... - make install - - -Index: src/stored/wait.c -=================================================================== ---- src/stored/wait.c (revision 5814) -+++ src/stored/wait.c (working copy) -@@ -40,9 +40,8 @@ - #include "bacula.h" /* pull in global headers */ - #include "stored.h" /* pull in Storage Deamon headers */ - --//static bool double_jcr_wait_time(JCR *jcr); -+const int dbglvl = 400; - -- - /* - * Wait for SysOp to mount a tape on a specific device - * -@@ -62,7 +61,7 @@ - JCR *jcr = dcr->jcr; - - dev->dlock(); -- Dmsg1(100, "Enter blocked=%s\n", dev->print_blocked()); -+ Dmsg1(dbglvl, "Enter blocked=%s\n", dev->print_blocked()); - unmounted = is_device_unmounted(dev); - - dev->poll = false; -@@ -84,27 +83,28 @@ - } - - if (!unmounted) { -- Dmsg1(400, "blocked=%s\n", dev->print_blocked()); -+ Dmsg1(dbglvl, "blocked=%s\n", dev->print_blocked()); - dev->dev_prev_blocked = dev->blocked(); - dev->set_blocked(BST_WAITING_FOR_SYSOP); /* indicate waiting for mount */ - } - - for ( ; !job_canceled(jcr); ) { -- time_t now, start; -+ time_t now, start, total_waited; - - gettimeofday(&tv, &tz); - timeout.tv_nsec = tv.tv_usec * 1000; - timeout.tv_sec = tv.tv_sec + add_wait; - -- Dmsg4(400, "I'm going to sleep on device %s. HB=%d wait=%d add_wait=%d\n", -- dev->print_name(), (int)me->heartbeat_interval, dev->wait_sec, add_wait); -+ Dmsg4(dbglvl, "I'm going to sleep on device %s. HB=%d rem_wait=%d add_wait=%d\n", -+ dev->print_name(), (int)me->heartbeat_interval, dev->rem_wait_sec, add_wait); - start = time(NULL); - /* Wait required time */ - stat = pthread_cond_timedwait(&dev->wait_next_vol, &dev->m_mutex, &timeout); -- Dmsg2(400, "Wokeup from sleep on device stat=%d blocked=%s\n", stat, -+ Dmsg2(dbglvl, "Wokeup from sleep on device stat=%d blocked=%s\n", stat, - dev->print_blocked()); - - now = time(NULL); -+ total_waited = now - first_start; - dev->rem_wait_sec -= (now - start); - - /* Note, this always triggers the first time. We want that. */ -@@ -113,7 +113,7 @@ - /* send heartbeats */ - if (jcr->file_bsock) { - jcr->file_bsock->signal(BNET_HEARTBEAT); -- Dmsg0(400, "Send heartbeat to FD.\n"); -+ Dmsg0(dbglvl, "Send heartbeat to FD.\n"); - } - if (jcr->dir_bsock) { - jcr->dir_bsock->signal(BNET_HEARTBEAT); -@@ -131,7 +131,7 @@ - - - if (dev->rem_wait_sec <= 0) { /* on exceeding wait time return */ -- Dmsg0(400, "Exceed wait time.\n"); -+ Dmsg0(dbglvl, "Exceed wait time.\n"); - stat = W_TIMEOUT; - break; - } -@@ -142,8 +142,8 @@ - unmounted = is_device_unmounted(dev); - - if (!unmounted && dev->vol_poll_interval && -- (now - first_start >= dev->vol_poll_interval)) { -- Dmsg1(400, "In wait blocked=%s\n", dev->print_blocked()); -+ (total_waited >= dev->vol_poll_interval)) { -+ Dmsg1(dbglvl, "poll return in wait blocked=%s\n", dev->print_blocked()); - dev->poll = true; /* returning a poll event */ - stat = W_POLL; - break; -@@ -152,6 +152,7 @@ - * Check if user mounted the device while we were waiting - */ - if (dev->blocked() == BST_MOUNT) { /* mount request ? */ -+ Dmsg0(dbglvl, "Mounted return.\n"); - stat = W_MOUNT; - break; - } -@@ -160,30 +161,39 @@ - * If we did not timeout, then some event happened, so - * return to check if state changed. - */ -- if (stat != 0) { -+ if (stat != ETIMEDOUT) { -+ berrno be; -+ Dmsg2(dbglvl, "Wake return. stat=%d. ERR=%s\n", stat, be.bstrerror(stat)); - stat = W_WAKE; /* someone woke us */ - break; - } - - /* - * At this point, we know we woke up because of a timeout, -- * that was due to a heartbeat, so we just update -- * the wait counters and continue. -+ * that was due to a heartbeat, because any other reason would -+ * have caused us to return, so update the wait counters and continue. - */ -- add_wait = dev->wait_sec - (now - start); -+ add_wait = dev->rem_wait_sec; -+ if (me->heartbeat_interval && add_wait > me->heartbeat_interval) { -+ add_wait = me->heartbeat_interval; -+ } -+ /* If the user did not unmount the tape and we are polling, ensure -+ * that we poll at the correct interval. -+ */ -+ if (!unmounted && dev->vol_poll_interval && -+ add_wait > dev->vol_poll_interval - total_waited) { -+ add_wait = dev->vol_poll_interval - total_waited; -+ } - if (add_wait < 0) { - add_wait = 0; - } -- if (me->heartbeat_interval && add_wait > me->heartbeat_interval) { -- add_wait = me->heartbeat_interval; -- } - } - - if (!unmounted) { - dev->set_blocked(dev->dev_prev_blocked); /* restore entry state */ -- Dmsg1(400, "set %s\n", dev->print_blocked()); -+ Dmsg1(dbglvl, "set %s\n", dev->print_blocked()); - } -- Dmsg1(400, "Exit blocked=%s\n", dev->print_blocked()); -+ Dmsg1(dbglvl, "Exit blocked=%s\n", dev->print_blocked()); - dev->dunlock(); - return stat; - } -@@ -209,7 +219,7 @@ - const int max_wait_time = 1 * 60; /* wait 1 minute */ - char ed1[50]; - -- Dmsg0(100, "Enter wait_for_device\n"); -+ Dmsg0(dbglvl, "Enter wait_for_device\n"); - P(device_release_mutex); - - if (++retries % 5 == 0) { -@@ -222,14 +232,14 @@ - timeout.tv_nsec = tv.tv_usec * 1000; - timeout.tv_sec = tv.tv_sec + max_wait_time; - -- Dmsg1(100, "JobId=%u going to wait for a device.\n", (uint32_t)jcr->JobId); -+ Dmsg0(dbglvl, "Going to wait for a device.\n"); - - /* Wait required time */ - stat = pthread_cond_timedwait(&wait_device_release, &device_release_mutex, &timeout); -- Dmsg2(100, "JobId=%u wokeup from sleep on device stat=%d\n", (uint32_t)jcr->JobId, stat); -+ Dmsg1(dbglvl, "Wokeup from sleep on device stat=%d\n", stat); - - V(device_release_mutex); -- Dmsg2(100, "JobId=%u return from wait_device ok=%d\n", (uint32_t)jcr->JobId, ok); -+ Dmsg1(dbglvl, "Return from wait_device ok=%d\n", ok); - return ok; - } - Deleted: branches/Branch-2.2/bacula/patches/2.2.5-lastwritten.patch =================================================================== --- branches/Branch-2.2/bacula/patches/2.2.5-lastwritten.patch 2007-12-02 18:03:17 UTC (rev 6011) +++ branches/Branch-2.2/bacula/patches/2.2.5-lastwritten.patch 2007-12-02 18:04:07 UTC (rev 6012) @@ -1,41 +0,0 @@ - - This bug fixes the LastWritten field which was updated during - a restore (or a reading migration) - This fixes bug #982 - - This patch applies to Bacula version 2.2.5 (and previous versions), - and can be applied with the following: - - cd <bacula-source> - patch -p0 <2.2.5-lastwritten.patch - ./configure (your options) - make - ... - make install - - - -Index: src/dird/catreq.c -=================================================================== ---- src/dird/catreq.c (r\xE9vision 5789) -+++ src/dird/catreq.c (copie de travail) -@@ -266,6 +266,11 @@ - } - } - Dmsg2(400, "Update media: BefVolJobs=%u After=%u\n", mr.VolJobs, sdmr.VolJobs); -+ /* Check if the volume has been written by the job, -+ * and update the LastWritten field if needed */ -+ if (mr.VolBlocks != sdmr.VolBlocks) { -+ mr.LastWritten = sdmr.LastWritten; -+ } - /* Copy updated values to original media record */ - mr.VolJobs = sdmr.VolJobs; - mr.VolFiles = sdmr.VolFiles; -@@ -274,7 +279,6 @@ - mr.VolMounts = sdmr.VolMounts; - mr.VolErrors = sdmr.VolErrors; - mr.VolWrites = sdmr.VolWrites; -- mr.LastWritten = sdmr.LastWritten; - mr.Slot = sdmr.Slot; - mr.InChanger = sdmr.InChanger; - mr.VolReadTime = sdmr.VolReadTime; Deleted: branches/Branch-2.2/bacula/patches/2.2.5-nextvol.patch =================================================================== --- branches/Branch-2.2/bacula/patches/2.2.5-nextvol.patch 2007-12-02 18:03:17 UTC (rev 6011) +++ branches/Branch-2.2/bacula/patches/2.2.5-nextvol.patch 2007-12-02 18:04:07 UTC (rev 6012) @@ -1,29 +0,0 @@ - - This bug fixes the warning message that prints each time an automatic - Volume name is created. This fixes bug #979 - - This patch applies to Bacula version 2.2.5 (not to previous versions), - and can be applied with the following: - - cd <bacula-source> - patch -p0 <2.2.5-newvol.patch - ./configure (your options) - make - ... - make install - - - -Index: src/dird/newvol.c -=================================================================== ---- src/dird/newvol.c (revision 5717) -+++ src/dird/newvol.c (working copy) -@@ -124,7 +124,7 @@ - mr->VolumeName[0] = 0; - bstrncpy(name, pr->LabelFormat, sizeof(name)); - ctx.value = 0; -- Mmsg(query, "SELECT MAX(MediaId) FROM Media,POOL WHERE Pool.PoolId=%s", -+ Mmsg(query, "SELECT MAX(MediaId) FROM Media,Pool WHERE Pool.PoolId=%s", - edit_int64(pr->PoolId, ed1)); - if (!db_sql_query(jcr->db, query.c_str(), db_int64_handler, (void *)&ctx)) { - Jmsg(jcr, M_WARNING, 0, _("SQL failed, but ignored. ERR=%s\n"), db_strerror(jcr->db)); Deleted: branches/Branch-2.2/bacula/patches/2.2.5-postgresql-errors.patch =================================================================== --- branches/Branch-2.2/bacula/patches/2.2.5-postgresql-errors.patch 2007-12-02 18:03:17 UTC (rev 6011) +++ branches/Branch-2.2/bacula/patches/2.2.5-postgresql-errors.patch 2007-12-02 18:04:07 UTC (rev 6012) @@ -1,28 +0,0 @@ - After a sql error, the error message that is printed - is incorrect and does not include the postgresql error message. - It fixes #989 - - This patch applies to Bacula version 2.2.5 (and previous versions), - and can be applied with the following: - - cd <bacula-source> - patch -p0 <2.2.5-postgresql-errors.patch - ./configure (your options) - make - ... - make install - - -Index: src/cats/cats.h -=================================================================== ---- src/cats/cats.h (r\xE9vision 5763) -+++ src/cats/cats.h (copie de travail) -@@ -498,7 +498,7 @@ - #define sql_fetch_row(x) my_postgresql_fetch_row(x) - #define sql_query(x, y) my_postgresql_query((x), (y)) - #define sql_close(x) PQfinish((x)->db) --#define sql_strerror(x) PQresultErrorMessage((x)->result) -+#define sql_strerror(x) PQerrorMessage((x)->db) - #define sql_num_rows(x) ((unsigned) PQntuples((x)->result)) - #define sql_data_seek(x, i) my_postgresql_data_seek((x), (i)) - #define sql_affected_rows(x) ((unsigned) atoi(PQcmdTuples((x)->result))) Deleted: branches/Branch-2.2/bacula/patches/2.2.5-tray-monitor.patch =================================================================== --- branches/Branch-2.2/bacula/patches/2.2.5-tray-monitor.patch 2007-12-02 18:03:17 UTC (rev 6011) +++ branches/Branch-2.2/bacula/patches/2.2.5-tray-monitor.patch 2007-12-02 18:04:07 UTC (rev 6012) @@ -1,25 +0,0 @@ - - This patch activates the Close button in the tray monitor window. - It fixes bug #986. - - Apply it to Bacula version 2.2.5 with: - - cd <bacula-source> - patch -p0 <2.2.5-tray-monitor.patch - make - ... - make install - -Index: src/tray-monitor/tray-monitor.c -=================================================================== ---- src/tray-monitor/tray-monitor.c (revision 5717) -+++ src/tray-monitor/tray-monitor.c (working copy) -@@ -478,7 +478,7 @@ - gtk_box_pack_start(GTK_BOX(hbox), button, TRUE, FALSE, 0); - - button = new_image_button("gtk-close", _("Close")); --// g_signal_connect_swapped(G_OBJECT(button), "clicked", G_CALLBACK(gtk_widget_hide), G_OBJECT(window)); -+ g_signal_connect_swapped(G_OBJECT(button), "clicked", G_CALLBACK(gtk_widget_hide), G_OBJECT(window)); - gtk_box_pack_start(GTK_BOX(hbox), button, TRUE, FALSE, 0); - - gtk_box_pack_start(GTK_BOX(vbox), hbox, FALSE, FALSE, 0); Deleted: branches/Branch-2.2/bacula/patches/2.2.5-verify-loop.patch =================================================================== --- branches/Branch-2.2/bacula/patches/2.2.5-verify-loop.patch 2007-12-02 18:03:17 UTC (rev 6011) +++ branches/Branch-2.2/bacula/patches/2.2.5-verify-loop.patch 2007-12-02 18:04:07 UTC (rev 6012) @@ -1,33 +0,0 @@ - - This patch fixes bug #1003 where putting the message output from - a Verify job into the catalog results in a recursive loop. The problem - seems to show up only with postgresql (to be verified). - - Apply it to version 2.2.5 (or probably any previous 2.2.x version) with - - cd <bacula-source> - ./configure <your-options> not necessary if already configured - patch -p0 <2.2.5-verify-loop.patch - make - ... - make install - - -Index: src/dird/verify.c -=================================================================== ---- src/dird/verify.c (revision 5814) -+++ src/dird/verify.c (working copy) -@@ -767,11 +767,11 @@ - return 1; - } - if (!jcr->fn_printed) { -- Jmsg(jcr, M_INFO, 0, _("\nThe following files are in the Catalog but not on %s:\n"), -+ Qmsg(jcr, M_INFO, 0, _("\nThe following files are in the Catalog but not on %s:\n"), - jcr->JobLevel == L_VERIFY_VOLUME_TO_CATALOG ? "the Volume(s)" : "disk"); - jcr->fn_printed = true; - } -- Jmsg(jcr, M_INFO, 0, " %s%s\n", row[0]?row[0]:"", row[1]?row[1]:""); -+ Qmsg(jcr, M_INFO, 0, " %s%s\n", row[0]?row[0]:"", row[1]?row[1]:""); - return 0; - } - Added: branches/Branch-2.2/bacula/patches/2.2.6-scratch.patch =================================================================== --- branches/Branch-2.2/bacula/patches/2.2.6-scratch.patch (rev 0) +++ branches/Branch-2.2/bacula/patches/2.2.6-scratch.patch 2007-12-02 18:04:07 UTC (rev 6012) @@ -0,0 +1,29 @@ + + This patch prevents the "status dir" command from trying to use a scratch + volume and possibly moving it from one pool to another. This patch fixes + bug #1019. + + Apply the patch to 2.2.6 (and possibly any 2.2.x version with): + + cd <bacula-source> + patch -p0 <2.2.6-scratch.patch + ./configure <your-options> + make + ... + make install + + + +Index: src/dird/next_vol.c +=================================================================== +--- src/dird/next_vol.c (revision 5999) ++++ src/dird/next_vol.c (working copy) +@@ -97,7 +97,7 @@ + prune_volumes(jcr, InChanger, mr); + } + ok = recycle_oldest_purged_volume(jcr, InChanger, mr); +- if (!ok) { ++ if (!ok && create) { + Dmsg4(050, "after prune volumes_vol ok=%d index=%d InChanger=%d Vstat=%s\n", + ok, index, InChanger, mr->VolStatus); + /* Copied: branches/Branch-2.2/bacula/patches/2.2.x/2.2.4-ansi-label.patch (from rev 5999, branches/Branch-2.2/bacula/patches/2.2.4-ansi-label.patch) =================================================================== --- branches/Branch-2.2/bacula/patches/2.2.x/2.2.4-ansi-label.patch (rev 0) +++ branches/Branch-2.2/bacula/patches/2.2.x/2.2.4-ansi-label.patch 2007-12-02 18:04:07 UTC (rev 6012) @@ -0,0 +1,77 @@ + + This patch fixes bug #954. + WEOF on non-appendable error when trying to label a tape with ANSI labels turned on. + + Apply it to version 2.2.4 (possibly earlier versions with): + + cd <bacula-source> + patch -p0 <2.2.4-verify.patch + ./configure (your options) + make + ... + make install + +Index: block.c +=================================================================== +--- src/stored/block.c (revision 5615) ++++ src/stored/block.c (revision 5615) +@@ -273,6 +273,7 @@ + dev->dev_errno = EIO; + Mmsg4(dev->errmsg, _("Volume data error at %u:%u! Wanted ID: \"%s\", got \"%s\". Buffer discarded.\n"), + dev->file, dev->block_num, BLKHDR2_ID, Id); ++ Dmsg1(50, "%s", dev->errmsg); + if (block->read_errors == 0 || verbose >= 2) { + Jmsg(jcr, M_ERROR, 0, "%s", dev->errmsg); + } +@@ -1008,8 +1009,19 @@ + dev->set_ateof(); + return false; /* return eof */ + } ++ + /* Continue here for successful read */ ++ + block->read_len = stat; /* save length read */ ++ if (dev->at_eof() && block->read_len == 80 && ++ (dcr->VolCatInfo.LabelType != B_BACULA_LABEL || ++ dcr->device->label_type != B_BACULA_LABEL)) { ++ /* ***FIXME*** should check label */ ++ Dmsg2(100, "Ignore 80 byte ANSI label at %u:%u\n", dev->file, dev->block_num); ++ dev->clear_eof(); ++ goto reread; /* skip ANSI/IBM label */ ++ } ++ + if (block->read_len < BLKHDR2_LENGTH) { + dev->dev_errno = EIO; + Mmsg4(dev->errmsg, _("Volume data error at %u:%u! Very short block of %d bytes on device %s discarded.\n"), + +Index: label.c +=================================================================== +--- src/stored/label.c (revision 5602) ++++ src/stored/label.c (working copy) +@@ -119,7 +119,6 @@ + bstrncpy(dev->VolHdr.Id, "**error**", sizeof(dev->VolHdr.Id)); + + /* Read ANSI/IBM label if so requested */ +- + want_ansi_label = dcr->VolCatInfo.LabelType != B_BACULA_LABEL || + dcr->device->label_type != B_BACULA_LABEL; + if (want_ansi_label || dev->has_cap(CAP_CHECKLABELS)) { +@@ -344,6 +343,9 @@ + } + } + ++ /* Temporarily mark in append state to enable writing */ ++ dev->set_append(); ++ + /* Create PRE_LABEL or VOL_LABEL if DVD */ + create_volume_label(dev, VolName, PoolName, dvdnow); + +@@ -364,8 +366,6 @@ + create_volume_label_record(dcr, dcr->rec); + dcr->rec->Stream = 0; + +- /* Temporarily mark in append state to enable writing */ +- dev->set_append(); + if (!write_record_to_block(dcr->block, dcr->rec)) { + Dmsg2(130, "Bad Label write on %s: ERR=%s\n", dev->print_name(), dev->print_errmsg()); + goto ba... [truncated message content] |
From: <ke...@us...> - 2007-12-03 19:27:33
|
Revision: 6017 http://bacula.svn.sourceforge.net/bacula/?rev=6017&view=rev Author: kerns Date: 2007-12-03 11:27:38 -0800 (Mon, 03 Dec 2007) Log Message: ----------- 03Dec07 kes This patch fixes bcopy so that it produces correct Volumes. It fixes bug #1022. kes This patch eliminates spurious output to the console during a VerifyVolume job that contains encrypted data. It fixes bug #1024. Modified Paths: -------------- branches/Branch-2.2/bacula/src/filed/verify_vol.c branches/Branch-2.2/bacula/src/stored/bcopy.c branches/Branch-2.2/bacula/technotes-2.1 Added Paths: ----------- branches/Branch-2.2/bacula/patches/2.2.6-bcopy.patch branches/Branch-2.2/bacula/patches/2.2.6-verify-vol.patch Added: branches/Branch-2.2/bacula/patches/2.2.6-bcopy.patch =================================================================== --- branches/Branch-2.2/bacula/patches/2.2.6-bcopy.patch (rev 0) +++ branches/Branch-2.2/bacula/patches/2.2.6-bcopy.patch 2007-12-03 19:27:38 UTC (rev 6017) @@ -0,0 +1,78 @@ + + This patch fixes bcopy so that it produces correct Volumes. + It fixes bug #1022. + + Apply this patch to version 2.2.6 and possibly any 2.2.x version with: + + cd <bacula-source> + patch -p0 2.2.6-bcopy.patch + ./configure <your-options> + make + ... + make install + + +Index: src/stored/bcopy.c +=================================================================== +--- src/stored/bcopy.c (revision 6010) ++++ src/stored/bcopy.c (working copy) +@@ -89,6 +89,7 @@ + char *iVolumeName = NULL; + char *oVolumeName = NULL; + bool ignore_label_errors = false; ++ bool ok; + + setlocale(LC_ALL, ""); + bindtextdomain("bacula", LOCALEDIR); +@@ -199,9 +200,11 @@ + } + out_block = out_jcr->dcr->block; + +- read_records(in_jcr->dcr, record_cb, mount_next_read_volume); +- if (!write_block_to_device(out_jcr->dcr)) { +- Pmsg0(000, _("Write of last block failed.\n")); ++ ok = read_records(in_jcr->dcr, record_cb, mount_next_read_volume); ++ if (ok || out_dev->can_write()) { ++ if (!write_block_to_device(out_jcr->dcr)) { ++ Pmsg0(000, _("Write of last block failed.\n")); ++ } + } + + Pmsg2(000, _("%u Jobs copied. %u records copied.\n"), jobs, records); +@@ -253,6 +256,7 @@ + out_dev->print_name(), out_dev->bstrerror()); + Jmsg(out_jcr, M_FATAL, 0, _("Cannot fixup device error. %s\n"), + out_dev->bstrerror()); ++ return false; + } + } + if (!write_block_to_device(out_jcr->dcr)) { +@@ -260,8 +264,9 @@ + out_dev->print_name(), out_dev->bstrerror()); + Jmsg(out_jcr, M_FATAL, 0, _("Cannot fixup device error. %s\n"), + out_dev->bstrerror()); ++ return false; + } +- break; ++ return true; + case EOM_LABEL: + Pmsg0(000, _("EOM label not copied.\n")); + return true; +@@ -269,7 +274,7 @@ + Pmsg0(000, _("EOT label not copied.\n")); + return true; + default: +- break; ++ return true; + } + } + +@@ -283,7 +288,7 @@ + out_dev->print_name(), out_dev->bstrerror()); + Jmsg(out_jcr, M_FATAL, 0, _("Cannot fixup device error. %s\n"), + out_dev->bstrerror()); +- break; ++ return false; + } + } + return true; Added: branches/Branch-2.2/bacula/patches/2.2.6-verify-vol.patch =================================================================== --- branches/Branch-2.2/bacula/patches/2.2.6-verify-vol.patch (rev 0) +++ branches/Branch-2.2/bacula/patches/2.2.6-verify-vol.patch 2007-12-03 19:27:38 UTC (rev 6017) @@ -0,0 +1,51 @@ + + This patch eliminates spurious output to the console during a VerifyVolume + job that contains encrypted data. + It fixes bug #1024. + + Apply this patch to Bacula version 2.2.6 and previous 2.2.x versions with: + + cd <bacula-source> + patch -p0 <2.2.6-verify-vol.patch + ./configure <your-options> + make + ... + make install + + +Index: src/filed/verify_vol.c +=================================================================== +--- src/filed/verify_vol.c (revision 6010) ++++ src/filed/verify_vol.c (working copy) +@@ -211,19 +211,6 @@ + } + break; + +- /* Data streams to ignore */ +- case STREAM_ENCRYPTED_SESSION_DATA: +- case STREAM_FILE_DATA: +- case STREAM_SPARSE_DATA: +- case STREAM_WIN32_DATA: +- case STREAM_WIN32_GZIP_DATA: +- case STREAM_GZIP_DATA: +- case STREAM_SPARSE_GZIP_DATA: +- case STREAM_SIGNED_DIGEST: +- +- /* Do nothing */ +- break; +- + case STREAM_MD5_DIGEST: + bin_to_base64(digest, sizeof(digest), (char *)sd->msg, CRYPTO_DIGEST_MD5_SIZE, true); + Dmsg2(400, "send inx=%d MD5=%s\n", jcr->JobFiles, digest); +@@ -256,9 +243,10 @@ + Dmsg2(20, "bfiled>bdird: SHA512 len=%d: msg=%s\n", dir->msglen, dir->msg); + break; + ++ /* Ignore everything else */ + default: +- Pmsg2(0, "None of above!!! stream=%d data=%s\n", stream,sd->msg); + break; ++ + } /* end switch */ + } /* end while bnet_get */ + set_jcr_job_status(jcr, JS_Terminated); Modified: branches/Branch-2.2/bacula/src/filed/verify_vol.c =================================================================== --- branches/Branch-2.2/bacula/src/filed/verify_vol.c 2007-12-03 19:27:21 UTC (rev 6016) +++ branches/Branch-2.2/bacula/src/filed/verify_vol.c 2007-12-03 19:27:38 UTC (rev 6017) @@ -211,19 +211,6 @@ } break; - /* Data streams to ignore */ - case STREAM_ENCRYPTED_SESSION_DATA: - case STREAM_FILE_DATA: - case STREAM_SPARSE_DATA: - case STREAM_WIN32_DATA: - case STREAM_WIN32_GZIP_DATA: - case STREAM_GZIP_DATA: - case STREAM_SPARSE_GZIP_DATA: - case STREAM_SIGNED_DIGEST: - - /* Do nothing */ - break; - case STREAM_MD5_DIGEST: bin_to_base64(digest, sizeof(digest), (char *)sd->msg, CRYPTO_DIGEST_MD5_SIZE, true); Dmsg2(400, "send inx=%d MD5=%s\n", jcr->JobFiles, digest); @@ -256,9 +243,10 @@ Dmsg2(20, "bfiled>bdird: SHA512 len=%d: msg=%s\n", dir->msglen, dir->msg); break; + /* Ignore everything else */ default: - Pmsg2(0, "None of above!!! stream=%d data=%s\n", stream,sd->msg); break; + } /* end switch */ } /* end while bnet_get */ set_jcr_job_status(jcr, JS_Terminated); Modified: branches/Branch-2.2/bacula/src/stored/bcopy.c =================================================================== --- branches/Branch-2.2/bacula/src/stored/bcopy.c 2007-12-03 19:27:21 UTC (rev 6016) +++ branches/Branch-2.2/bacula/src/stored/bcopy.c 2007-12-03 19:27:38 UTC (rev 6017) @@ -89,6 +89,7 @@ char *iVolumeName = NULL; char *oVolumeName = NULL; bool ignore_label_errors = false; + bool ok; setlocale(LC_ALL, ""); bindtextdomain("bacula", LOCALEDIR); @@ -199,9 +200,11 @@ } out_block = out_jcr->dcr->block; - read_records(in_jcr->dcr, record_cb, mount_next_read_volume); - if (!write_block_to_device(out_jcr->dcr)) { - Pmsg0(000, _("Write of last block failed.\n")); + ok = read_records(in_jcr->dcr, record_cb, mount_next_read_volume); + if (ok || out_dev->can_write()) { + if (!write_block_to_device(out_jcr->dcr)) { + Pmsg0(000, _("Write of last block failed.\n")); + } } Pmsg2(000, _("%u Jobs copied. %u records copied.\n"), jobs, records); @@ -253,6 +256,7 @@ out_dev->print_name(), out_dev->bstrerror()); Jmsg(out_jcr, M_FATAL, 0, _("Cannot fixup device error. %s\n"), out_dev->bstrerror()); + return false; } } if (!write_block_to_device(out_jcr->dcr)) { @@ -260,8 +264,9 @@ out_dev->print_name(), out_dev->bstrerror()); Jmsg(out_jcr, M_FATAL, 0, _("Cannot fixup device error. %s\n"), out_dev->bstrerror()); + return false; } - break; + return true; case EOM_LABEL: Pmsg0(000, _("EOM label not copied.\n")); return true; @@ -269,7 +274,7 @@ Pmsg0(000, _("EOT label not copied.\n")); return true; default: - break; + return true; } } @@ -283,7 +288,7 @@ out_dev->print_name(), out_dev->bstrerror()); Jmsg(out_jcr, M_FATAL, 0, _("Cannot fixup device error. %s\n"), out_dev->bstrerror()); - break; + return false; } } return true; Modified: branches/Branch-2.2/bacula/technotes-2.1 =================================================================== --- branches/Branch-2.2/bacula/technotes-2.1 2007-12-03 19:27:21 UTC (rev 6016) +++ branches/Branch-2.2/bacula/technotes-2.1 2007-12-03 19:27:38 UTC (rev 6017) @@ -1,6 +1,11 @@ Technical notes on version 2.2 General: +03Dec07 +kes This patch fixes bcopy so that it produces correct Volumes. + It fixes bug #1022. +kes This patch eliminates spurious output to the console during a VerifyVolume + job that contains encrypted data. It fixes bug #1024. 02Dec07 kes This patch prevents the 'status dir' command from trying to use a scratch volume and possibly moving it from one pool to another. This patch fixes This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <ke...@us...> - 2007-12-08 09:54:52
|
Revision: 6026 http://bacula.svn.sourceforge.net/bacula/?rev=6026&view=rev Author: kerns Date: 2007-12-08 01:54:55 -0800 (Sat, 08 Dec 2007) Log Message: ----------- Add new include to postgresql.c suggested by Marc Cousins so that it compiles correctly with pgre version 8.3. Also fix misuse of %x with pointer (should be %p). Modified Paths: -------------- branches/Branch-2.2/bacula/src/cats/postgresql.c branches/Branch-2.2/bacula/technotes-2.1 Modified: branches/Branch-2.2/bacula/src/cats/postgresql.c =================================================================== --- branches/Branch-2.2/bacula/src/cats/postgresql.c 2007-12-06 21:36:46 UTC (rev 6025) +++ branches/Branch-2.2/bacula/src/cats/postgresql.c 2007-12-08 09:54:55 UTC (rev 6026) @@ -47,6 +47,7 @@ #ifdef HAVE_POSTGRESQL #include "postgres_ext.h" /* needed for NAMEDATALEN */ +#include "pg_config_manual.h" /* get NAMEDATALEN on version 8.3 or later */ /* ----------------------------------------------------------------------- * @@ -386,7 +387,7 @@ Dmsg2(500, "my_postgresql_fetch_row row number '%d' is NOT acceptable (0..%d)\n", mdb->row_number, mdb->num_rows); } - Dmsg1(500, "my_postgresql_fetch_row finishes returning %x\n", row); + Dmsg1(500, "my_postgresql_fetch_row finishes returning %p\n", row); return row; } Modified: branches/Branch-2.2/bacula/technotes-2.1 =================================================================== --- branches/Branch-2.2/bacula/technotes-2.1 2007-12-06 21:36:46 UTC (rev 6025) +++ branches/Branch-2.2/bacula/technotes-2.1 2007-12-08 09:54:55 UTC (rev 6026) @@ -1,6 +1,10 @@ Technical notes on version 2.2 General: +08Dec07 +kes Add new include to postgresql.c suggested by Marc Cousins so + that it compiles correctly with pgre version 8.3. Also fix + misuse of %x with pointer (should be %p). 03Dec07 kes This patch fixes bcopy so that it produces correct Volumes. It fixes bug #1022. This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <ke...@us...> - 2007-12-10 17:54:41
|
Revision: 6033 http://bacula.svn.sourceforge.net/bacula/?rev=6033&view=rev Author: kerns Date: 2007-12-10 09:54:41 -0800 (Mon, 10 Dec 2007) Log Message: ----------- Correct a problem where the maximum concurrent storage jobs counter gets out of sync during restore jobs causing jobs to 'wait on max Storage jobs'. Fixes bug #1009. Modified Paths: -------------- branches/Branch-2.2/bacula/examples/nagios/nagios_plugin_check_bacula.tgz branches/Branch-2.2/bacula/src/cats/create_postgresql_database.in branches/Branch-2.2/bacula/src/dird/jobq.c branches/Branch-2.2/bacula/technotes-2.1 Modified: branches/Branch-2.2/bacula/examples/nagios/nagios_plugin_check_bacula.tgz =================================================================== (Binary files differ) Modified: branches/Branch-2.2/bacula/src/cats/create_postgresql_database.in =================================================================== --- branches/Branch-2.2/bacula/src/cats/create_postgresql_database.in 2007-12-10 17:34:38 UTC (rev 6032) +++ branches/Branch-2.2/bacula/src/cats/create_postgresql_database.in 2007-12-10 17:54:41 UTC (rev 6033) @@ -9,9 +9,15 @@ # use SQL_ASCII to be able to put any filename into # the database even those created with unusual character sets ENCODING="ENCODING 'SQL_ASCII'" + # use UTF8 if you are using standard Unix/Linux LANG specifications # that use UTF8 -- this is normally the default and *should* be -# your standard. Bacula consoles work correctly *only* with UTF8. +# your standard. Bacula works correctly *only* with correct UTF8. +# +# Note, with this encoding, if you have any "weird" filenames on +# your system (names generated from Win32 or Mac OS), you may +# get Bacula batch insert failures. +# #ENCODING="ENCODING 'UTF8'" Modified: branches/Branch-2.2/bacula/src/dird/jobq.c =================================================================== --- branches/Branch-2.2/bacula/src/dird/jobq.c 2007-12-10 17:34:38 UTC (rev 6032) +++ branches/Branch-2.2/bacula/src/dird/jobq.c 2007-12-10 17:54:41 UTC (rev 6033) @@ -1,23 +1,4 @@ /* - * Bacula job queue routines. - * - * This code consists of three queues, the waiting_jobs - * queue, where jobs are initially queued, the ready_jobs - * queue, where jobs are placed when all the resources are - * allocated and they can immediately be run, and the - * running queue where jobs are placed when they are - * running. - * - * Kern Sibbald, July MMIII - * - * Version $Id$ - * - * This code was adapted from the Bacula workq, which was - * adapted from "Programming with POSIX Threads", by - * David R. Butenhof - * - */ -/* Bacula® - The Network Backup Solution Copyright (C) 2003-2007 Free Software Foundation Europe e.V. @@ -44,6 +25,25 @@ (FSFE), Fiduciary Program, Sumatrastrasse 25, 8006 Zürich, Switzerland, email:ft...@fs.... */ +/* + * Bacula job queue routines. + * + * This code consists of three queues, the waiting_jobs + * queue, where jobs are initially queued, the ready_jobs + * queue, where jobs are placed when all the resources are + * allocated and they can immediately be run, and the + * running queue where jobs are placed when they are + * running. + * + * Kern Sibbald, July MMIII + * + * Version $Id$ + * + * This code was adapted from the Bacula workq, which was + * adapted from "Programming with POSIX Threads", by + * David R. Butenhof + * + */ #include "bacula.h" #include "dird.h" @@ -453,6 +453,7 @@ } } jq->running_jobs->append(je); +// set_jcr_in_tsd(jcr); Dmsg1(2300, "Took jobid=%d from ready and appended to run\n", jcr->JobId); /* Release job queue lock */ @@ -682,14 +683,13 @@ jcr->acquired_resource_locks = false; if (jcr->rstore) { Dmsg1(200, "Rstore=%s\n", jcr->rstore->name()); - if (jcr->rstore->NumConcurrentJobs == 0 && - jcr->rstore->NumConcurrentJobs < jcr->rstore->MaxConcurrentJobs) { - /* Simple case, first job */ + /* + * Let only one Restore/Verify job run at a time regardless + * of MaxConcurrentjobs. + */ + if (jcr->rstore->NumConcurrentJobs == 0) { jcr->rstore->NumConcurrentJobs = 1; Dmsg0(200, "Set rncj=1\n"); - } else if (jcr->rstore->NumConcurrentJobs < jcr->rstore->MaxConcurrentJobs) { - jcr->rstore->NumConcurrentJobs++; - Dmsg1(200, "Inc rncj=%d\n", jcr->rstore->NumConcurrentJobs); } else { Dmsg1(200, "Fail rncj=%d\n", jcr->rstore->NumConcurrentJobs); set_jcr_job_status(jcr, JS_WaitStoreRes); @@ -700,7 +700,7 @@ if (jcr->wstore) { Dmsg1(200, "Wstore=%s\n", jcr->wstore->name()); if (jcr->rstore == jcr->wstore) { /* deadlock */ - jcr->rstore->NumConcurrentJobs--; /* back out rstore */ + jcr->rstore->NumConcurrentJobs = 0; /* back out rstore */ Jmsg(jcr, M_FATAL, 0, _("Job canceled. Attempt to read and write same device.\n" " Read storage \"%s\" (From %s) -- Write storage \"%s\" (From %s)\n"), jcr->rstore->name(), jcr->rstore_source, jcr->wstore->name(), jcr->wstore_source); @@ -716,7 +716,7 @@ jcr->wstore->NumConcurrentJobs++; Dmsg1(200, "Inc wncj=%d\n", jcr->wstore->NumConcurrentJobs); } else if (jcr->rstore) { - jcr->rstore->NumConcurrentJobs--; /* back out rstore */ + jcr->rstore->NumConcurrentJobs = 0; /* back out rstore */ Dmsg1(200, "Fail wncj=%d\n", jcr->wstore->NumConcurrentJobs); skip_this_jcr = true; } else { @@ -738,7 +738,7 @@ Dmsg1(200, "Dec wncj=%d\n", jcr->wstore->NumConcurrentJobs); } if (jcr->rstore) { - jcr->rstore->NumConcurrentJobs--; + jcr->rstore->NumConcurrentJobs = 0; Dmsg1(200, "Dec rncj=%d\n", jcr->rstore->NumConcurrentJobs); } set_jcr_job_status(jcr, JS_WaitClientRes); @@ -753,7 +753,7 @@ Dmsg1(200, "Dec wncj=%d\n", jcr->wstore->NumConcurrentJobs); } if (jcr->rstore) { - jcr->rstore->NumConcurrentJobs--; + jcr->rstore->NumConcurrentJobs = 0; Dmsg1(200, "Dec rncj=%d\n", jcr->rstore->NumConcurrentJobs); } jcr->client->NumConcurrentJobs--; Modified: branches/Branch-2.2/bacula/technotes-2.1 =================================================================== --- branches/Branch-2.2/bacula/technotes-2.1 2007-12-10 17:34:38 UTC (rev 6032) +++ branches/Branch-2.2/bacula/technotes-2.1 2007-12-10 17:54:41 UTC (rev 6033) @@ -1,6 +1,10 @@ Technical notes on version 2.2 General: +10Dec07 +kes This patch corrects a problem where the maximum concurrent storage + jobs counter gets out of sync during restore jobs causing jobs to + 'wait on max Storage jobs'. This patch fixes bug #1009. 08Dec07 kes Add new include to postgresql.c suggested by Marc Cousins so that it compiles correctly with pgre version 8.3. Also fix This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <ke...@us...> - 2007-12-14 10:43:07
|
Revision: 6060 http://bacula.svn.sourceforge.net/bacula/?rev=6060&view=rev Author: kerns Date: 2007-12-14 02:43:12 -0800 (Fri, 14 Dec 2007) Log Message: ----------- Skip leading | when lex input comes from a pipe as suggested by Michael Stapelberg <mi...@st...>. Modified Paths: -------------- branches/Branch-2.2/bacula/src/lib/lex.c branches/Branch-2.2/bacula/src/tools/bsmtp.c branches/Branch-2.2/bacula/technotes-2.1 Modified: branches/Branch-2.2/bacula/src/lib/lex.c =================================================================== --- branches/Branch-2.2/bacula/src/lib/lex.c 2007-12-14 10:42:37 UTC (rev 6059) +++ branches/Branch-2.2/bacula/src/lib/lex.c 2007-12-14 10:43:12 UTC (rev 6060) @@ -174,7 +174,7 @@ if (fname[0] == '|') { - if ((bpipe = open_bpipe(fname, 0, "rb")) == NULL) { + if ((bpipe = open_bpipe(fname+1, 0, "rb")) == NULL) { free(fname); return NULL; } Modified: branches/Branch-2.2/bacula/src/tools/bsmtp.c =================================================================== --- branches/Branch-2.2/bacula/src/tools/bsmtp.c 2007-12-14 10:42:37 UTC (rev 6059) +++ branches/Branch-2.2/bacula/src/tools/bsmtp.c 2007-12-14 10:43:12 UTC (rev 6060) @@ -216,7 +216,9 @@ long offset; _tzset(); offset = _timezone; - offset += _dstbias; + if (tm.tm_isdst) { + offset += _dstbias; + } return offset /= 60; #else Modified: branches/Branch-2.2/bacula/technotes-2.1 =================================================================== --- branches/Branch-2.2/bacula/technotes-2.1 2007-12-14 10:42:37 UTC (rev 6059) +++ branches/Branch-2.2/bacula/technotes-2.1 2007-12-14 10:43:12 UTC (rev 6060) @@ -1,6 +1,12 @@ Technical notes on version 2.2 General: +14Dec07 +kes Skip leading | when lex input comes from a pipe as suggested + by Michael Stapelberg <mi...@st...>. +13Dec07 +kes Apply patch for bsmtp Win32 daylight savings time fix supplied by + Nerijus Baliunas <ne...@us...> 10Dec07 kes This patch corrects a problem where the maximum concurrent storage jobs counter gets out of sync during restore jobs causing jobs to This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <ke...@us...> - 2007-12-14 16:25:54
|
Revision: 6067 http://bacula.svn.sourceforge.net/bacula/?rev=6067&view=rev Author: kerns Date: 2007-12-14 08:25:59 -0800 (Fri, 14 Dec 2007) Log Message: ----------- Apply patch from Michael Stapelberg <mi...@st...> that implements double quoting include names in conf files, and also allows piping input by having the first character be a vertical bar (|). Modified Paths: -------------- branches/Branch-2.2/bacula/AUTHORS branches/Branch-2.2/bacula/src/lib/lex.c branches/Branch-2.2/bacula/src/lib/lex.h branches/Branch-2.2/bacula/technotes-2.1 Modified: branches/Branch-2.2/bacula/AUTHORS =================================================================== --- branches/Branch-2.2/bacula/AUTHORS 2007-12-14 16:10:52 UTC (rev 6066) +++ branches/Branch-2.2/bacula/AUTHORS 2007-12-14 16:25:59 UTC (rev 6067) @@ -11,6 +11,7 @@ Adam Thorton Adrew J. Millar Adrian Close +Aitor Matilla Aleksandar Milivojevic Alexander Bergolth Alexandre Baron @@ -20,6 +21,7 @@ Attila Fülöp Bernd Frick Bill Moran +Bastian Friedrich Carlos A. Molina G Carsten Paeth Chris Lee @@ -53,14 +55,16 @@ Kern Sibbald Landon Fuller Luca Berra +Lucas B. Cohen Lucas Di Pentima Ludovic Strappazon Marc Cousin Marc Schiffbauer Martin Simmons Meno Abels +Michael Renner Michael -buk- Scherer -Michael Renner +Michael Stapelberg Michel Meyers Morgan Nic Bellamy @@ -76,6 +80,7 @@ Rudolf Cejka Russel Howe Sergey Svishchev +Thomas Glatthor Thorsten Enge Tim Oberfoell Tomas Cameron Modified: branches/Branch-2.2/bacula/src/lib/lex.c =================================================================== --- branches/Branch-2.2/bacula/src/lib/lex.c 2007-12-14 16:10:52 UTC (rev 6066) +++ branches/Branch-2.2/bacula/src/lib/lex.c 2007-12-14 16:25:59 UTC (rev 6067) @@ -297,6 +297,8 @@ case lex_identifier: return _("identifier"); case lex_string: return _("string"); case lex_quoted_string: return _("quoted_string"); + case lex_include: return _("include"); + case lex_include_quoted_string: return _("include_quoted_string"); case lex_utf8_bom: return _("UTF-8 Byte Order Mark"); case lex_utf16_le_bom: return _("UTF-16le Byte Order Mark"); default: return "??????"; @@ -567,11 +569,49 @@ } add_str(lf, ch); break; + case lex_include_quoted_string: + if (ch == L_EOF) { + token = T_ERROR; + break; + } + if (esc_next) { + add_str(lf, ch); + esc_next = false; + break; + } + if (ch == '\\') { + esc_next = true; + break; + } + if (ch == '"') { + /* Keep the original LEX so we can print an error if the included file can't be opened. */ + LEX* lfori = lf; + /* Skip the double quote when restarting parsing */ + lex_get_char(lf); + + lf->state = lex_none; + lf = lex_open_file(lf, lf->str, lf->scan_error); + if (lf == NULL) { + berrno be; + scan_err2(lfori, _("Cannot open included config file %s: %s\n"), + lfori->str, be.bstrerror()); + return T_ERROR; + } + break; + } + add_str(lf, ch); + break; case lex_include: /* scanning a filename */ if (ch == L_EOF) { token = T_ERROR; break; } + if (ch == '"') { + lf->state = lex_include_quoted_string; + break; + } + + if (B_ISSPACE(ch) || ch == '\n' || ch == L_EOL || ch == '}' || ch == '{' || ch == ';' || ch == ',' || ch == '"' || ch == '#') { /* Keep the original LEX so we can print an error if the included file can't be opened. */ Modified: branches/Branch-2.2/bacula/src/lib/lex.h =================================================================== --- branches/Branch-2.2/bacula/src/lib/lex.h 2007-12-14 16:10:52 UTC (rev 6066) +++ branches/Branch-2.2/bacula/src/lib/lex.h 2007-12-14 16:25:59 UTC (rev 6067) @@ -85,6 +85,7 @@ lex_identifier, lex_string, lex_quoted_string, + lex_include_quoted_string, lex_include, lex_utf8_bom, /* we are parsing out a utf8 byte order mark */ lex_utf16_le_bom /* we are parsing out a utf-16 (little endian) byte order mark */ Modified: branches/Branch-2.2/bacula/technotes-2.1 =================================================================== --- branches/Branch-2.2/bacula/technotes-2.1 2007-12-14 16:10:52 UTC (rev 6066) +++ branches/Branch-2.2/bacula/technotes-2.1 2007-12-14 16:25:59 UTC (rev 6067) @@ -2,6 +2,10 @@ General: 14Dec07 +kes Apply patch from Michael Stapelberg <mi...@st...> + that implements double quoting include names in conf files, + and also allows piping input by having the first character + be a vertical bar (|). kes Skip leading | when lex input comes from a pipe as suggested by Michael Stapelberg <mi...@st...>. 13Dec07 This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <ke...@us...> - 2007-12-19 14:38:04
|
Revision: 6074 http://bacula.svn.sourceforge.net/bacula/?rev=6074&view=rev Author: kerns Date: 2007-12-19 06:38:08 -0800 (Wed, 19 Dec 2007) Log Message: ----------- kes Apply patch from Bastian Friedrich <bas...@co...> that implement %f in RunScripts to pass the FileSet name. Modified Paths: -------------- branches/Branch-2.2/bacula/src/dird/dird_conf.c branches/Branch-2.2/bacula/src/dird/protos.h branches/Branch-2.2/bacula/src/lib/protos.h branches/Branch-2.2/bacula/src/lib/runscript.c branches/Branch-2.2/bacula/src/lib/runscript.h branches/Branch-2.2/bacula/src/lib/util.c branches/Branch-2.2/bacula/technotes-2.1 Modified: branches/Branch-2.2/bacula/src/dird/dird_conf.c =================================================================== --- branches/Branch-2.2/bacula/src/dird/dird_conf.c 2007-12-19 14:36:34 UTC (rev 6073) +++ branches/Branch-2.2/bacula/src/dird/dird_conf.c 2007-12-19 14:38:08 UTC (rev 6074) @@ -1732,6 +1732,7 @@ if (pass == 2) { RUNSCRIPT *script = new_runscript(); + script->set_job_code_callback(job_code_callback_filesetname); script->set_command(lc->str); @@ -1872,6 +1873,7 @@ RUNSCRIPT *script = new_runscript(); memcpy(script, &res_runscript, sizeof(RUNSCRIPT)); + script->set_job_code_callback(job_code_callback_filesetname); if (*runscripts == NULL) { *runscripts = New(alist(10, not_owned_by_alist)); @@ -1884,3 +1886,13 @@ scan_to_eol(lc); set_bit(index, res_all.hdr.item_present); } + +/* callback function for edit_job_codes */ +char *job_code_callback_filesetname(JCR *jcr, const char* param) +{ + if (param[0] == 'f') { + return jcr->fileset->name(); + } else { + return NULL; + } +} Modified: branches/Branch-2.2/bacula/src/dird/protos.h =================================================================== --- branches/Branch-2.2/bacula/src/dird/protos.h 2007-12-19 14:36:34 UTC (rev 6073) +++ branches/Branch-2.2/bacula/src/dird/protos.h 2007-12-19 14:38:08 UTC (rev 6074) @@ -75,6 +75,7 @@ /* dird_conf.c */ extern const char *level_to_str(int level); +extern char *job_code_callback_filesetname(JCR *jcr, const char*); /* expand.c */ int variable_expansion(JCR *jcr, char *inp, POOLMEM **exp); Modified: branches/Branch-2.2/bacula/src/lib/protos.h =================================================================== --- branches/Branch-2.2/bacula/src/lib/protos.h 2007-12-19 14:36:34 UTC (rev 6073) +++ branches/Branch-2.2/bacula/src/lib/protos.h 2007-12-19 14:38:08 UTC (rev 6074) @@ -301,6 +301,9 @@ /* util.c */ + +typedef char *(*job_code_callback_t)(JCR *, const char *); + bool is_buf_zero (char *buf, int len); void lcase (char *str); void bash_spaces (char *str); @@ -317,7 +320,7 @@ const char * job_status_to_str (int stat); const char * job_level_to_str (int level); void make_session_key (char *key, char *seed, int mode); -POOLMEM * edit_job_codes (JCR *jcr, char *omsg, char *imsg, const char *to); +POOLMEM * edit_job_codes (JCR *jcr, char *omsg, char *imsg, const char *to, job_code_callback_t job_code_callback = NULL); void set_working_directory (char *wd); const char * last_path_separator (const char *str); Modified: branches/Branch-2.2/bacula/src/lib/runscript.c =================================================================== --- branches/Branch-2.2/bacula/src/lib/runscript.c 2007-12-19 14:36:34 UTC (rev 6073) +++ branches/Branch-2.2/bacula/src/lib/runscript.c 2007-12-19 14:38:08 UTC (rev 6074) @@ -66,6 +66,7 @@ fail_on_error = true; when = SCRIPT_Never; old_proto = false; /* TODO: drop this with bacula 1.42 */ + job_code_callback = NULL; } RUNSCRIPT *copy_runscript(RUNSCRIPT *src) @@ -207,7 +208,7 @@ BPIPE *bpipe; char line[MAXSTRING]; - ecmd = edit_job_codes(jcr, ecmd, this->command, ""); + ecmd = edit_job_codes(jcr, ecmd, this->command, "", this->job_code_callback); Dmsg1(100, "runscript: running '%s'...\n", ecmd); Jmsg(jcr, M_INFO, 0, _("%s: run command \"%s\"\n"), name, ecmd); @@ -266,3 +267,9 @@ Dmsg1(200, _(" --> FailJobOnError=%u\n"), fail_on_error); Dmsg1(200, _(" --> RunWhen=%u\n"), when); } + +void RUNSCRIPT::set_job_code_callback(job_code_callback_t arg_job_code_callback) + +{ + this->job_code_callback = arg_job_code_callback; +} Modified: branches/Branch-2.2/bacula/src/lib/runscript.h =================================================================== --- branches/Branch-2.2/bacula/src/lib/runscript.h 2007-12-19 14:36:34 UTC (rev 6073) +++ branches/Branch-2.2/bacula/src/lib/runscript.h 2007-12-19 14:38:08 UTC (rev 6074) @@ -73,6 +73,8 @@ bool fail_on_error; /* abort job on error (Before) */ /* TODO : drop this with bacula 1.42 */ bool old_proto; /* used by old 1.3X protocol */ + job_code_callback_t job_code_callback; + /* Optional callback function passed to edit_job_code */ bool run(JCR *job, const char *name=""); /* name must contain "Before" or "After" keyword */ bool can_run_at_level(int JobLevel) { return true;}; /* TODO */ @@ -81,6 +83,8 @@ void reset_default(bool free_string = false); bool is_local(); /* true if running on local host */ void debug(); + + void set_job_code_callback(job_code_callback_t job_code_callback); }; /* create new RUNSCRIPT (set all value to 0) */ Modified: branches/Branch-2.2/bacula/src/lib/util.c =================================================================== --- branches/Branch-2.2/bacula/src/lib/util.c 2007-12-19 14:36:34 UTC (rev 6073) +++ branches/Branch-2.2/bacula/src/lib/util.c 2007-12-19 14:38:08 UTC (rev 6074) @@ -574,7 +574,7 @@ * to = recepients list * */ -POOLMEM *edit_job_codes(JCR *jcr, char *omsg, char *imsg, const char *to) +POOLMEM *edit_job_codes(JCR *jcr, char *omsg, char *imsg, const char *to, job_code_callback_t callback) { char *p, *q; const char *str; @@ -672,10 +672,17 @@ } break; default: - add[0] = '%'; - add[1] = *p; - add[2] = 0; - str = add; + str = NULL; + if (callback != NULL) { + str = callback(jcr, p); + } + + if (!str) { + add[0] = '%'; + add[1] = *p; + add[2] = 0; + str = add; + } break; } } else { Modified: branches/Branch-2.2/bacula/technotes-2.1 =================================================================== --- branches/Branch-2.2/bacula/technotes-2.1 2007-12-19 14:36:34 UTC (rev 6073) +++ branches/Branch-2.2/bacula/technotes-2.1 2007-12-19 14:38:08 UTC (rev 6074) @@ -6,6 +6,8 @@ that implements double quoting include names in conf files, and also allows piping input by having the first character be a vertical bar (|). +kes Apply patch from Bastian Friedrich <bas...@co...> + that implement %f in RunScripts to pass the FileSet name. kes Skip leading | when lex input comes from a pipe as suggested by Michael Stapelberg <mi...@st...>. 13Dec07 This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <ke...@us...> - 2007-12-22 13:56:50
|
Revision: 6090 http://bacula.svn.sourceforge.net/bacula/?rev=6090&view=rev Author: kerns Date: 2007-12-22 05:56:55 -0800 (Sat, 22 Dec 2007) Log Message: ----------- Update releasenotes Modified Paths: -------------- branches/Branch-2.2/bacula/ReleaseNotes branches/Branch-2.2/bacula/technotes-2.1 Modified: branches/Branch-2.2/bacula/ReleaseNotes =================================================================== --- branches/Branch-2.2/bacula/ReleaseNotes 2007-12-22 09:48:01 UTC (rev 6089) +++ branches/Branch-2.2/bacula/ReleaseNotes 2007-12-22 13:56:55 UTC (rev 6090) @@ -1,5 +1,5 @@ - Release Notes for Bacula 2.2.6 + Release Notes for Bacula 2.2.7 Bacula code: Total files = 520 Total lines = 195,550 (*.h *.c *.in) 82 new files, 41,221 new lines of code, 208,380 lines of change from 2.0.3 @@ -10,6 +10,20 @@ not have to upgrade all your File daemons when you upgrade. There is no database upgrade needed from version 2.0.x to 2.2.0. +Version 2.2.7 has several new features and a number of bug fixes +to version 2.2.6: +- It fixes bugs: 1009, 1022, 1024, 1019, 1012, 1021, 1020 + 1007, 1008. For more details, please see the technotes-2.1 file. +- Double quoting include filenames (@xxx) in Bacula conf files is now + possible, thanks to a patch by Michael Stapelberg. +- You can pipe input to include filenames (@|prog) by using a vertical + bar, thanks to the above patch. +- A daylight savings time bug in the Win32 bsmpt was fixed by a patch from + Nerijus Baliunas. +- Marc Cousins submitted a patch that permits building the PostgreSQL + driver with version 8.3. +- The configure option --archivedir has been changed to --with-archivedir + Version 2.2.6 is a minor bug fix release to version 2.2.5 - It fixes bugs: #1003, 942, 982, 990(response only), 991, 993, 986, 976. Modified: branches/Branch-2.2/bacula/technotes-2.1 =================================================================== --- branches/Branch-2.2/bacula/technotes-2.1 2007-12-22 09:48:01 UTC (rev 6089) +++ branches/Branch-2.2/bacula/technotes-2.1 2007-12-22 13:56:55 UTC (rev 6090) @@ -53,7 +53,7 @@ This patch also has a rebuild of configure that includes the Debian qt4 patch to check for qmake-qt4. This patch fixes bug #1020. kes This patch should ensure that queued messages to the console are - displayed as soon as possible. It should fix bug 1007, but has been + displayed as soon as possible. It should fix bug #1007, but has been reported not to work. 14Nov07 kes This patch fixes the infinite loop when trying to increase the This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <ke...@us...> - 2007-12-23 12:14:52
|
Revision: 6108 http://bacula.svn.sourceforge.net/bacula/?rev=6108&view=rev Author: kerns Date: 2007-12-23 04:14:54 -0800 (Sun, 23 Dec 2007) Log Message: ----------- Work on Dir seg fault reported by Frank Sweetser Modified Paths: -------------- branches/Branch-2.2/bacula/src/dird/ua_restore.c branches/Branch-2.2/bacula/src/lib/bsnprintf.c branches/Branch-2.2/bacula/technotes-2.1 Modified: branches/Branch-2.2/bacula/src/dird/ua_restore.c =================================================================== --- branches/Branch-2.2/bacula/src/dird/ua_restore.c 2007-12-23 10:57:20 UTC (rev 6107) +++ branches/Branch-2.2/bacula/src/dird/ua_restore.c 2007-12-23 12:14:54 UTC (rev 6108) @@ -233,7 +233,7 @@ escaped_where_name = escape_filename(rx.RegexWhere); Mmsg(ua->cmd, "run job=\"%s\" client=\"%s\" restoreclient=\"%s\" storage=\"%s\"" - " bootstrap=\"%s\" regexwhere=\"%s\" files=%d catalog=\"%s\"", + " bootstrap=\"%s\" regexwhere=\"%s\" files=%u catalog=\"%s\"", job->name(), rx.ClientName, rx.RestoreClientName, rx.store?rx.store->name():"", escaped_bsr_name ? escaped_bsr_name : jcr->RestoreBootstrap, @@ -244,7 +244,7 @@ escaped_where_name = escape_filename(rx.where); Mmsg(ua->cmd, "run job=\"%s\" client=\"%s\" restoreclient=\"%s\" storage=\"%s\"" - " bootstrap=\"%s\" where=\"%s\" files=%d catalog=\"%s\"", + " bootstrap=\"%s\" where=\"%s\" files=%u catalog=\"%s\"", job->name(), rx.ClientName, rx.RestoreClientName, rx.store?rx.store->name():"", escaped_bsr_name ? escaped_bsr_name : jcr->RestoreBootstrap, @@ -254,7 +254,7 @@ } else { Mmsg(ua->cmd, "run job=\"%s\" client=\"%s\" restoreclient=\"%s\" storage=\"%s\"" - " bootstrap=\"%s\" files=%d catalog=\"%s\"", + " bootstrap=\"%s\" files=%u catalog=\"%s\"", job->name(), rx.ClientName, rx.RestoreClientName, rx.store?rx.store->name():"", escaped_bsr_name ? escaped_bsr_name : jcr->RestoreBootstrap, Modified: branches/Branch-2.2/bacula/src/lib/bsnprintf.c =================================================================== --- branches/Branch-2.2/bacula/src/lib/bsnprintf.c 2007-12-23 10:57:20 UTC (rev 6107) +++ branches/Branch-2.2/bacula/src/lib/bsnprintf.c 2007-12-23 12:14:54 UTC (rev 6108) @@ -77,7 +77,7 @@ #define fmtfp(b, c, m, f, min, max, fl) currlen #endif -#define outch(c) {int len=currlen; if (currlen++ < maxlen) { buffer[len] = (c);}} +#define outch(c) {if (currlen < maxlen) { buffer[currlen++] = (c);}} /* format read states */ @@ -152,9 +152,9 @@ *buffer = 0; while (state != DP_S_DONE) { - if ((ch == '\0') || (currlen >= maxlen)) + if ((ch == '\0') || (currlen >= maxlen)) { state = DP_S_DONE; - + } switch (state) { case DP_S_DEFAULT: if (ch == '%') { @@ -444,11 +444,12 @@ { int signvalue = 0; uint64_t uvalue; - char convert[20]; + char convert[25]; int place = 0; int spadlen = 0; /* amount to space pad */ int zpadlen = 0; /* amount to zero pad */ int caps = 0; + const char *cvt_string; if (max < 0) { max = 0; @@ -471,12 +472,12 @@ caps = 1; /* Should characters be upper case? */ } + cvt_string = caps ? "0123456789ABCDEF" : "0123456789abcdef"; do { - convert[place++] = (caps ? "0123456789ABCDEF" : "0123456789abcdef") - [uvalue % (unsigned)base]; + convert[place++] = cvt_string[uvalue % (unsigned)base]; uvalue = (uvalue / (unsigned)base); - } while (uvalue && (place < 20)); - if (place == 20) { + } while (uvalue && (place < (int)sizeof(convert))); + if (place == (int)sizeof(convert)) { place--; } convert[place] = 0; Modified: branches/Branch-2.2/bacula/technotes-2.1 =================================================================== --- branches/Branch-2.2/bacula/technotes-2.1 2007-12-23 10:57:20 UTC (rev 6107) +++ branches/Branch-2.2/bacula/technotes-2.1 2007-12-23 12:14:54 UTC (rev 6108) @@ -1,6 +1,10 @@ Technical notes on version 2.2 General: +23Dec07 +kes Attempt to eliminate seg fault Frank Sweetser is seeing in + running the regression tests on his Fedora systems. It seems + to be related to bsnprintf and long path names. 14Dec07 kes Apply patch from Michael Stapelberg <mi...@st...> that implements double quoting include names in conf files, This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |