]> git.sur5r.net Git - bacula/bacula/commitdiff
Update version
authorKern Sibbald <kern@sibbald.com>
Mon, 15 Aug 2005 07:25:11 +0000 (07:25 +0000)
committerKern Sibbald <kern@sibbald.com>
Mon, 15 Aug 2005 07:25:11 +0000 (07:25 +0000)
git-svn-id: https://bacula.svn.sourceforge.net/svnroot/bacula/trunk@2314 91ce42f0-d328-0410-95d8-f526ca767f89

12 files changed:
bacula/autoconf/configure.in
bacula/configure
bacula/kernstodo
bacula/kes-1.37
bacula/src/dird/backup.c
bacula/src/dird/protos.h
bacula/src/dird/pythondir.c
bacula/src/dird/ua_prune.c
bacula/src/dird/ua_purge.c
bacula/src/filed/backup.c
bacula/src/findlib/create_file.c
bacula/src/version.h

index e0c967e9b726c29d873da72705f979943ad7aed4..a0a1aec20cb5a2cefb3cd0338d3eade7e0aec8f4 100644 (file)
@@ -122,8 +122,6 @@ AM_GNU_GETTEXT([external])
 if test x${prefix} = xNONE && test x${datadir} = x${prefix}/share ; then
    datadir=/usr/share
 fi
-localedir=`eval echo ${datadir}/locale`
-AC_DEFINE_UNQUOTED(LOCALEDIR, "$localedir") 
 
 # ------------------------------------------------------------------
 #  If the user has not set --prefix, we set our default to nothing.
@@ -138,6 +136,9 @@ if test x${prefix} = xNONE ; then
     prefix=
 fi
 sysconfdir=`eval echo ${sysconfdir}`
+datadir=`eval echo ${datadir}`
+localedir=`eval echo ${datadir}/locale`
+AC_DEFINE_UNQUOTED(LOCALEDIR, "$localedir") 
 
 # -------------------------------------------------------------------------
 #  If the user has not set --exec-prefix, we default to ${prefix}
@@ -2017,6 +2018,7 @@ Configuration on `date`:
   PID directory:             ${piddir}
   Subsys directory:          ${subsysdir}
   Man directory:             ${mandir}
+  Data directory:            ${datadir}
   C Compiler:                ${CC} ${CCVERSION}
   C++ Compiler:              ${CXX} ${CXXVERSION}
   Compiler flags:            ${WCFLAGS} ${CFLAGS} 
index a1b808ddb10bd60fe06ee5701f6bc117efcc7973..18b8b1eea89ba2f91843b6d1b9eb4fbf2b2083e8 100755 (executable)
@@ -6667,11 +6667,6 @@ _ACEOF
 if test x${prefix} = xNONE && test x${datadir} = x${prefix}/share ; then
    datadir=/usr/share
 fi
-localedir=`eval echo ${datadir}/locale`
-cat >>confdefs.h <<_ACEOF
-#define LOCALEDIR "$localedir"
-_ACEOF
-
 
 # ------------------------------------------------------------------
 #  If the user has not set --prefix, we set our default to nothing.
@@ -6686,6 +6681,12 @@ if test x${prefix} = xNONE ; then
     prefix=
 fi
 sysconfdir=`eval echo ${sysconfdir}`
+datadir=`eval echo ${datadir}`
+localedir=`eval echo ${datadir}/locale`
+cat >>confdefs.h <<_ACEOF
+#define LOCALEDIR "$localedir"
+_ACEOF
+
 
 # -------------------------------------------------------------------------
 #  If the user has not set --exec-prefix, we default to ${prefix}
@@ -25265,6 +25266,7 @@ Configuration on `date`:
   PID directory:             ${piddir}
   Subsys directory:          ${subsysdir}
   Man directory:             ${mandir}
+  Data directory:            ${datadir}
   C Compiler:                ${CC} ${CCVERSION}
   C++ Compiler:              ${CXX} ${CXXVERSION}
   Compiler flags:            ${WCFLAGS} ${CFLAGS}
index f89e82461bb3e8094c87f9f84c8ed6c054f10e71..b136ea1eceffe464c145210a0d667eea53133de9 100644 (file)
@@ -1,5 +1,5 @@
                     Kern's ToDo List
-                     04 August 2005
+                     13 August 2005
 
 Major development:      
 Project                     Developer
@@ -11,6 +11,11 @@ Final items for 1.37 before release:
 1. Fix bugs
 - Tape xxx in drive 0, requested in drive 1
 - The mount command does not work with drives other than 0.
+- A mount should cause the SD to re-examine what Slot is   
+  loaded.
+- The SD locks on to the first available drive then
+  wants a Volume that is released but in another drive --
+  chaos.
 - Look at fixing restore status stats in SD.
 - My database is growing
 
@@ -30,6 +35,8 @@ Document:
   records have been removed from the catalog.
 
 For 1.39:
+- "Resuming" a failed backup (lost line for example) by using the
+  failed backup as a sort of "base" job.
 - Look at NDMP
 - Email to the user when the tape is about to need changing x
   days before it needs changing.
index c1e16ae882df07713380eb4520a2f523091b16b6..5691cf76d70fca172f83f5b9c8d67843f467eb11 100644 (file)
@@ -4,6 +4,15 @@
 General:
 
 Changes to 1.37.36:
+15Aug05
+- Make datadir print on config.out listing.
+- Move get FileSet record up in backup init to eliminate continual
+  Full save seen by Peter Sjoberg.
+- Add VolumeName to read-only Python variables.
+- Add VolumePurged event for Python.
+- Suppress /dev/ Filesystem change prohibited INFO messages.
+- Do not delete FT_RAW files before restore (allows FIFOs
+  to be used for restore).
 13Aug05
 - Add drive specification to mount, unmount, release, label,
   and relabel for Autochangers.  Note Dir<->SD protocol has
index afa6e277d7063352aaf76cd3f22d0806dfa99a66..af58f298a4d2f634ab515af753241be54581e6d7 100644 (file)
@@ -51,6 +51,12 @@ bool do_backup_init(JCR *jcr)
    FILESET_DBR fsr;
    POOL_DBR pr;
 
+   memset(&fsr, 0, sizeof(fsr);
+   if (!get_or_create_fileset_record(jcr, &fsr)) {
+      return false;
+   }
+   bstrncpy(jcr->FSCreateTime, fsr.cCreateTime, sizeof(jcr->FSCreateTime));
+
    /* 
     * Get definitive Job level and since time
     */
@@ -97,12 +103,6 @@ bool do_backup_init(JCR *jcr)
    jcr->PoolId = pr.PoolId;               /****FIXME**** this can go away */
    jcr->jr.PoolId = pr.PoolId;
 
-   if (!get_or_create_fileset_record(jcr, &fsr)) {
-      return false;
-   }
-   bstrncpy(jcr->FSCreateTime, fsr.cCreateTime, sizeof(jcr->FSCreateTime));
-
-
    Dmsg2(900, "cloned=%d run_cmds=%p\n", jcr->cloned, jcr->job->run_cmds);
    if (!jcr->cloned && jcr->job->run_cmds) {
       char *runcmd;
index b6a3513de2f923dba906b6e82eecceb00f9b55fd..b96d60ba53b9c74aa1126e6080e9e15a51d0e63e 100644 (file)
@@ -212,7 +212,11 @@ int prune_jobs(UAContext *ua, CLIENT *client, int JobType);
 int prune_volume(UAContext *ua, MEDIA_DBR *mr);
 
 /* ua_purge.c */
+bool mark_media_purged(UAContext *ua, MEDIA_DBR *mr);
+void purge_files_from_volume(UAContext *ua, MEDIA_DBR *mr );
 int purge_jobs_from_volume(UAContext *ua, MEDIA_DBR *mr);
+void purge_files_from_job(UAContext *ua, JOB_DBR *jr);
+
 
 /* ua_run.c */
 extern int run_cmd(UAContext *ua, const char *cmd);
index 5893be1d784425f1e7b7bdd31ebf02ed4ab8065a..233f1f9ff808173e2e7506c37c84b6afb8d175fe 100644 (file)
@@ -58,29 +58,30 @@ struct s_vars {
 
 /* Read-only variables */
 static struct s_vars getvars[] = {
-   { N_("Job"),        "s"},
-   { N_("Level"),      "s"},
-   { N_("Type"),       "s"},
-   { N_("JobId"),      "i"},
-   { N_("Client"),     "s"},
-   { N_("NumVols"),    "i"},
-   { N_("Pool"),       "s"},
-   { N_("Storage"),    "s"},
-   { N_("Catalog"),    "s"},
-   { N_("MediaType"),  "s"},
-   { N_("JobName"),    "s"},
-   { N_("JobStatus"),  "s"},
-   { N_("Priority"),   "i"},
-   { N_("CatalogRes"), "(sssssis)"},
+   { "Job",        "s"},
+   { "Level",      "s"},
+   { "Type",       "s"},
+   { "JobId",      "i"},
+   { "Client",     "s"},
+   { "NumVols",    "i"},
+   { "Pool",       "s"},
+   { "Storage",    "s"},
+   { "Catalog",    "s"},
+   { "MediaType",  "s"},
+   { "JobName",    "s"},
+   { "JobStatus",  "s"},
+   { "Priority",   "i"},
+   { "VolumeName", "s"},
+   { "CatalogRes", "(sssssis)"},
 
    { NULL,             NULL}
 };
 
 /* Writable variables */
 static struct s_vars setvars[] = {
-   { N_("JobReport"),   "s"},
-   { N_("VolumeName"),  "s"},
-   { N_("Priority"),    "i"},
+   { "JobReport",   "s"},
+   { "VolumeName",  "s"},
+   { "Priority",    "i"},
 
    { NULL,             NULL}
 };
@@ -152,7 +153,9 @@ PyObject *job_getattr(PyObject *self, char *attrname)
       return Py_BuildValue(getvars[i].fmt, buf);
    case 12:                           /* Priority */
       return Py_BuildValue(getvars[i].fmt, jcr->JobPriority);
-   case 13:                           /* CatalogRes */
+   case 13:
+      return Py_BuildValue(getvars[i].fmt, jcr->VolumeName);
+   case 14:                           /* CatalogRes */
       return Py_BuildValue(getvars[i].fmt,
          jcr->catalog->db_name, jcr->catalog->db_address, 
          jcr->catalog->db_user, jcr->catalog->db_password,
index 18641bbedce8914b1e6e567b2f7788871f5404a9..d3c9a0f18f8127a7ad34cdbda784dc5151c2cbaf 100644 (file)
@@ -26,7 +26,6 @@
 #include "dird.h"
 
 /* Imported functions */
-int mark_media_purged(UAContext *ua, MEDIA_DBR *mr);
 
 /* Forward referenced functions */
 
index c5d969425cc991284266f41ef73b8c19152d6577..fb1874695c703ff3a5e760371bd6ca45e1e92dd6 100644 (file)
 static int purge_files_from_client(UAContext *ua, CLIENT *client);
 static int purge_jobs_from_client(UAContext *ua, CLIENT *client);
 
-void purge_files_from_volume(UAContext *ua, MEDIA_DBR *mr );
-int purge_jobs_from_volume(UAContext *ua, MEDIA_DBR *mr);
-void purge_files_from_job(UAContext *ua, JOB_DBR *jr);
-int mark_media_purged(UAContext *ua, MEDIA_DBR *mr);
-
 #define MAX_DEL_LIST_LEN 1000000
 
-
 static const char *select_jobsfiles_from_client =
    "SELECT JobId FROM Job "
    "WHERE ClientId=%s "
@@ -569,17 +563,20 @@ bail_out:
  * IF volume status is Append, Full, Used, or Error, mark it Purged
  *   Purged volumes can then be recycled (if enabled).
  */
-int mark_media_purged(UAContext *ua, MEDIA_DBR *mr)
+bool mark_media_purged(UAContext *ua, MEDIA_DBR *mr)
 {
+   JCR *jcr = ua->jcr;
    if (strcmp(mr->VolStatus, "Append") == 0 ||
        strcmp(mr->VolStatus, "Full")   == 0 ||
        strcmp(mr->VolStatus, "Used")   == 0 ||
        strcmp(mr->VolStatus, "Error")  == 0) {
       bstrncpy(mr->VolStatus, "Purged", sizeof(mr->VolStatus));
-      if (!db_update_media_record(ua->jcr, ua->db, mr)) {
-         return 0;
+      if (!db_update_media_record(jcr, ua->db, mr)) {
+         return false;
       }
-      return 1;
+      pm_strcpy(jcr->VolumeName, mr->VolumeName);
+      generate_job_event(jcr, "VolumePurged");
+      return true;
    } else {
       bsendmsg(ua, _("Cannot purge Volume with VolStatus=%s\n"), mr->VolStatus);
    }
index 857fb499bcc007056b14abb25e65ceb1f5b70c81..31268f8b71a68a5b428dedf2831f2c792c132052 100644 (file)
@@ -152,21 +152,25 @@ static int save_file(FF_PKT *ff_pkt, void *vjcr, bool top_level)
    case FT_DIRBEGIN:
       return 1;                       /* not used */
    case FT_NORECURSE:
+     Jmsg(jcr, M_INFO, 1, _("     Recursion turned off. Will not descend into %s\n"),
+          ff_pkt->fname);
+      ff_pkt->type = FT_DIREND;       /* Backup only the directory entry */
+      break;
    case FT_NOFSCHG:
-   case FT_INVALIDFS:
-   case FT_DIREND:
-      if (ff_pkt->type == FT_NORECURSE) {
-         Jmsg(jcr, M_INFO, 1, _("     Recursion turned off. Will not descend into %s\n"),
-            ff_pkt->fname);
-      } else if (ff_pkt->type == FT_NOFSCHG) {
-         Jmsg(jcr, M_INFO, 1, _("     File system change prohibited. Will not descend into %s\n"),
-            ff_pkt->fname);
-      } else if (ff_pkt->type == FT_INVALIDFS) {
-         Jmsg(jcr, M_INFO, 1, _("     Disallowed filesystem. Will not descend into %s\n"),
+      /* Suppress message for /dev filesystems */
+      if (strncmp(ff_pkt->fname, "/dev/", 5) != 0) {
+         Jmsg(jcr, M_INFO, 1, _("     Filesystem change prohibited. Will not descend into %s\n"),
             ff_pkt->fname);
       }
-      ff_pkt->type = FT_DIREND;       /* value is used below */
-      Dmsg1(130, "FT_DIR saving: %s\n", ff_pkt->link);
+      ff_pkt->type = FT_DIREND;       /* Backup only the directory entry */
+      break;
+   case FT_INVALIDFS:
+      Jmsg(jcr, M_INFO, 1, _("     Disallowed filesystem. Will not descend into %s\n"),
+           ff_pkt->fname);
+      ff_pkt->type = FT_DIREND;       /* Backup only the directory entry */
+      break;
+   case FT_DIREND:
+      Dmsg1(130, "FT_DIREND: %s\n", ff_pkt->link);
       break;
    case FT_SPEC:
       Dmsg1(130, "FT_SPEC saving: %s\n", ff_pkt->fname);
index 8733c03e36f710eb955d92df531f869463235991..223d99ecd63e7a5974cb5251d5016604283ca18d 100644 (file)
@@ -111,7 +111,13 @@ int create_file(JCR *jcr, ATTR *attr, BFILE *bfd, int replace)
    case FT_SPEC:
    case FT_REGE:                      /* empty file */
    case FT_REG:                       /* regular file */
-      if (exists) {
+      /* 
+       * Note, we do not delete FT_RAW because these are device files
+       *  or FIFOs that should already exist. If we blow it away,
+       *  we may blow away a FIFO that is being used to read the
+       *  restore data, or we may blow away a partition definition.
+       */
+      if (exists && attr->type != FT_RAW) {
          /* Get rid of old copy */
          if (unlink(attr->ofname) == -1) {
             berrno be;
index c01e52562bb2671d0ea91800cf305da40402720d..ccb575a399fd712c9cd2eb1d03b5fea225043eb8 100644 (file)
@@ -1,8 +1,8 @@
 /* */
 #undef  VERSION
 #define VERSION "1.37.36"
-#define BDATE   "13 August 2005"
-#define LSMDATE "13Aug05"
+#define BDATE   "15 August 2005"
+#define LSMDATE "15Aug05"
 
 /* Debug flags */
 #undef  DEBUG