]> git.sur5r.net Git - bacula/bacula/commitdiff
- Start implementing Verify list output.
authorKern Sibbald <kern@sibbald.com>
Thu, 5 Jan 2006 16:23:46 +0000 (16:23 +0000)
committerKern Sibbald <kern@sibbald.com>
Thu, 5 Jan 2006 16:23:46 +0000 (16:23 +0000)
- Move the suitable_drive flag to a better place to prevent
  premature termination of the reservation if all drives
  are busy -- should fix Arno's diff/inc pool failures.
26Dec05
- Add mutex to single thread VSS code in Win32.

git-svn-id: https://bacula.svn.sourceforge.net/svnroot/bacula/trunk@2716 91ce42f0-d328-0410-95d8-f526ca767f89

bacula/ChangeLog
bacula/ReleaseNotes
bacula/kernstodo
bacula/kes-1.38
bacula/kes-1.39
bacula/src/dird/dird_conf.c
bacula/src/dird/dird_conf.h
bacula/src/dird/ua_run.c
bacula/src/stored/reserve.c

index 7cef386b6b792ffb9611673885e133f08c3a33bd..3f060ac0d7ac7d69cb9ed9f1bd08942f3f35ab09 100644 (file)
@@ -1,5 +1,12 @@
 
-Changes to 1.38.3:
+Release 1.38.3 05Jan06:
+04Jan06
+- Move the suitable_drive flag to a better place to prevent
+  premature termination of the reservation if all drives
+  are busy -- should fix Arno's diff/inc pool failures.
+26Dec05
+- Add mutex to single thread VSS code in Win32.
+
 Beta release 23Dec05:
 22Dec05
 - Add OPENSSL_INC to console dependencies, lib dependencies, and
index ab934c45c4726e9a8544d37994c8608acda0c7c3..e4346a291a58fb4677cfde3ff9229a2a199111a8 100644 (file)
@@ -299,6 +299,11 @@ New configure options:
   required only if you do not want the default /usr/share.
 
 Items to note!!!
+- The Storage daemon now keeps track of what tapes it is using
+  (was not the case in 1.36.x). This means that you must be much
+  more careful when removing tapes and putting up a new one. In
+  general, you should always do a "unmount" prior to removing a
+  tape, and a "mount" after putting a new one into the drive.
 - If you use an Autochanger, you MUST update your SD conf file
   to use the new Autochanger resource.  Otherwise, certain commands
   such as "update slots" may not work.
@@ -349,3 +354,8 @@ Other Items:
   files, called "parts".
 - For the details of the Python scripting support, please see the new
   Python Scripting chapter in the manual.
+- The default user/group for the Director and Storage daemon installed
+  by rpms is bacula/bacula, thus you may need to add additional permissions
+  to your database, or modify the permissions of the tape drive.  If
+  all else fails, change to using user=root.  However, it is more secure
+  to use user=bacula.
index c57a9a624c7b02cf626425e14badef8ccbd09778..b2a4fb393bfc79fb83bb7d0e1cd24f785ca551f6 100644 (file)
@@ -1,5 +1,5 @@
                     Kern's ToDo List
-                     07 December 2005
+                     26 December 2005
 
 Major development:      
 Project                     Developer
@@ -14,6 +14,16 @@ Document:
 - Does WildFile match against full name?  Doc.
 - %d and %v only valid on Director, not for ClientRunBefore/After.
 
+Priority:
+- Implement status that shows why a job is being held in reserve, or
+  rather why none of the drives are suitable.
+- Implement a way to disable a drive (so you can use the second
+  drive of an autochanger, and the first one will not be used or
+  even defined).
+- Implement code that makes the Dir aware that a drive is an             
+  autochanger (so the user doesn't need to use the Autochanger = yes 
+  directive).
+
 For 1.39:
 - Make hardlink code at line 240 of find_one.c use binary search.
 - Queue warning/error messages during restore so that they
index cac5757dc3b6e1a78cb1a56271cdbdf79c412ad7..d5b5a4e7a775a97986641a09c70cca99e3fb29f5 100644 (file)
@@ -3,7 +3,14 @@
 
 General:
 
-Changes to 1.38.3:
+Release 1.38.3 05Jan06:
+04Jan06
+- Move the suitable_drive flag to a better place to prevent
+  premature termination of the reservation if all drives
+  are busy -- should fix Arno's diff/inc pool failures.
+26Dec05
+- Add mutex to single thread VSS code in Win32.
+
 Beta release 23Dec05:
 22Dec05
 - Add OPENSSL_INC to console dependencies, lib dependencies, and
index ab6b2c0e4a43ad1170e88fbf7810f7ce83b1d2a6..ca82eca3b177be3c85019c5e3f5580b63fbd8911 100644 (file)
@@ -4,6 +4,13 @@
 General:
 
 Changes to 1.39.3:
+04Jan06
+- Start implementing Verify list output.
+- Move the suitable_drive flag to a better place to prevent
+  premature termination of the reservation if all drives
+  are busy -- should fix Arno's diff/inc pool failures.
+26Dec05
+- Add mutex to single thread VSS code in Win32.
 22Dec05
 - Simplify code in askdir.c that waits for creating an appendable
   volume so that it can handle multiple returns from the wait
index 6fd684c206d59b640303d0a6c73b8797fcd118c3..bf15f6d3f5c1be2b8b6ef0c87e18211a66453036 100644 (file)
@@ -239,9 +239,13 @@ RES_ITEM job_items[] = {
    {"migrationjob", store_res,  ITEM(res_job.migration_job), R_JOB, 0, 0},
    {"jobdefs",   store_res,     ITEM(res_job.jobdefs),    R_JOBDEFS, 0, 0},
    {"run",       store_alist_str, ITEM(res_job.run_cmds), 0, 0, 0},
+   /* Root of where to restore files */
    {"where",    store_dir,      ITEM(res_job.RestoreWhere), 0, 0, 0},
+   /* Where to find bootstrap during restore */
    {"bootstrap",store_dir,      ITEM(res_job.RestoreBootstrap), 0, 0, 0},
+   /* Where to write bootstrap file during backup */
    {"writebootstrap",store_dir, ITEM(res_job.WriteBootstrap), 0, 0, 0},
+   {"writeverifylist",store_dir, ITEM(res_job.WriteVerifyList), 0, 0, 0},
    {"replace",  store_replace,  ITEM(res_job.replace), 0, ITEM_DEFAULT, REPLACE_ALWAYS},
    {"maxruntime",   store_time, ITEM(res_job.MaxRunTime), 0, 0, 0},
    {"fullmaxwaittime",  store_time, ITEM(res_job.FullMaxWaitTime), 0, 0, 0},
index 8e980d621f567283c464e9b80a54966f494f258c..3fb71288568401aa7c80dd9c17412aea68a74041 100644 (file)
@@ -284,7 +284,10 @@ public:
    char *RunAfterFailedJob;           /* Run program after Job that errs */
    char *ClientRunBeforeJob;          /* Run client program before Job */
    char *ClientRunAfterJob;           /* Run client program after Job */
-   char *WriteBootstrap;              /* Where to write bootstrap Job updates */
+   union {
+      char *WriteBootstrap;           /* Where to write bootstrap Job updates */
+      char *WriteVerifyList;          /* List of changed files */
+   };
    int   replace;                     /* How (overwrite, ..) */
    utime_t MaxRunTime;                /* max run time in seconds */
    utime_t MaxWaitTime;               /* max blocking time in seconds */
index 189bb48c34e5f04af7c88bc36bfd667b633076a1..e544817cf032c7d7112bea36bfed361648ee9c38 100644 (file)
@@ -48,6 +48,7 @@ int run_cmd(UAContext *ua, const char *cmd)
    const char *replace;
    char *when, *verify_job_name, *catalog_name;
    char *since = NULL;
+   char *verify_list;
    bool cloned = false;
    int Priority = 0;
    int i, j, opt, files = 0;
@@ -79,6 +80,7 @@ int run_cmd(UAContext *ua, const char *cmd)
       "catalog",                      /* 17 override catalog */
       "since",                        /* 18 since */
       "cloned",                       /* 19 cloned */
+      "verifylist",                   /* 20 verify output list */
       NULL};
 
 #define YES_POS 14
@@ -100,6 +102,7 @@ int run_cmd(UAContext *ua, const char *cmd)
    replace = NULL;
    verify_job_name = NULL;
    catalog_name = NULL;
+   verify_list = NULL;
 
    for (i=1; i<ua->argc; i++) {
       Dmsg2(800, "Doing arg %d = %s\n", i, ua->argk[i]);
@@ -247,6 +250,11 @@ int run_cmd(UAContext *ua, const char *cmd)
                kw_ok = true;
                break;
 
+            case 20: /* write verify list output */
+               verify_list = ua->argv[i];
+               kw_ok = true;
+               break;
+
             default:
                break;
             }
@@ -541,6 +549,12 @@ try_again:
          } else {
             Name = "";
          }
+         if (!verify_list) {
+            verify_list = job->WriteVerifyList;
+         }
+         if (!verify_list) {
+            verify_list = "";
+         }
          bsendmsg(ua, _("Run %s job\n"
 "JobName:     %s\n"
 "FileSet:     %s\n"
@@ -549,6 +563,7 @@ try_again:
 "Storage:     %s\n"
 "Pool:        %s\n"
 "Verify Job:  %s\n"
+"Verify List: %s\n"
 "When:        %s\n"
 "Priority:    %d\n"),
               _("Verify"),
@@ -559,6 +574,7 @@ try_again:
               jcr->store->hdr.name,
               NPRT(jcr->pool->hdr.name),
               Name,
+              verify_list,
               bstrutime(dt, sizeof(dt), jcr->sched_time),
               jcr->JobPriority);
       }
@@ -627,7 +643,6 @@ try_again:
       goto bail_out;
    }
 
-
    if (!get_cmd(ua, _("OK to run? (yes/mod/no): "))) {
       goto bail_out;
    }
index eb10b41a11a14adee0968560ed60dfa16fc26c36..be97a764e58bc0876d16bb36fc9c7eed216133cc 100644 (file)
@@ -9,7 +9,7 @@
  *
  */
 /*
-   Copyright (C) 2000-2005 Kern Sibbald
+   Copyright (C) 2000-2006 Kern Sibbald
 
    This program is free software; you can redistribute it and/or
    modify it under the terms of the GNU General Public License
@@ -507,15 +507,15 @@ bool find_suitable_device_for_job(JCR *jcr, RCTX &rctx)
          rctx.device_name = device_name;
          stat = search_res_for_device(rctx); 
          if (stat == 1) {             /* found available device */
-            rctx.suitable_device = true;
             Dmsg1(100, "Suitable device found=%s\n", device_name);
             ok = true;
             break;
          } else if (stat == 0) {      /* device busy */
             Dmsg1(100, "Suitable busy device found=%s\n", device_name);
-            rctx.suitable_device = true;   /* but it is busy, so continue looking */
+         } else {
+            /* otherwise error */
+            Dmsg0(100, "No suitable device found.\n");
          }
-         /* otherwise error */
       }
       if (ok) {
          break;
@@ -623,6 +623,7 @@ static int reserve_device(RCTX &rctx)
       return -1;  /* no use waiting */
    }  
 
+   rctx.suitable_device = true;
    Dmsg2(100, "Try reserve %s jobid=%d\n", rctx.device->hdr.name,
          rctx.jcr->JobId);
    dcr = new_dcr(rctx.jcr, rctx.device->dev);