]> git.sur5r.net Git - bacula/bacula/commitdiff
kes Enable Win32 plugin load code in lib.
authorKern Sibbald <kern@sibbald.com>
Wed, 10 Sep 2008 08:55:55 +0000 (08:55 +0000)
committerKern Sibbald <kern@sibbald.com>
Wed, 10 Sep 2008 08:55:55 +0000 (08:55 +0000)
kes  Make Verify code that computes disk checksums use the same
     algorithm as backup when dealing with sparse files.
kes  Attempt to run VSS on any systems newer than Vista -- should
     make it work on Windows Server 2008.

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

bacula/src/filed/verify.c
bacula/src/lib/plugins.c
bacula/src/lib/plugins.h
bacula/technotes-2.5

index 6c3171f1204f1958b840b8b7b894f53c5a6b4694..54971ccdd98cddc97bf200708c3c55cf589efc4e 100644 (file)
@@ -333,13 +333,32 @@ int digest_file(JCR *jcr, FF_PKT *ff_pkt, DIGEST *digest)
  * Read message digest of bfd, updating digest
  * In case of errors we need the job control record and file name.
  */
-int read_digest(BFILE *bfd, DIGEST *digest, JCR *jcr)
+static int read_digest(BFILE *bfd, DIGEST *digest, JCR *jcr)
 {
    char buf[DEFAULT_NETWORK_BUFFER_SIZE];
    int64_t n;
+   int64_t bufsiz = (int64_t)sizeof(buf);
+   FF_PKT *ff_pkt = (FF_PKT *)jcr->ff;
+   uint64_t fileAddr = 0;             /* file address */
+
 
    Dmsg0(50, "=== read_digest\n");
-   while ((n=bread(bfd, buf, sizeof(buf))) > 0) {
+   while ((n=bread(bfd, buf, bufsiz)) > 0) {
+      /* Check for sparse blocks */
+      if (ff_pkt->flags & FO_SPARSE) {
+         bool haveBlock = true;
+         if (n == bufsiz &&
+             fileAddr+n < (uint64_t)ff_pkt->statp.st_size ||
+             ((ff_pkt->type == FT_RAW || ff_pkt->type == FT_FIFO) &&
+               (uint64_t)ff_pkt->statp.st_size == 0)) {
+            haveBlock = !is_buf_zero(buf, bufsiz);
+         }
+         fileAddr += n;               /* update file address */
+         if (!haveBlock) {
+            continue;                 /* skip block of zeros */
+         }
+      }
+      
       crypto_digest_update(digest, (uint8_t *)buf, n);
       jcr->JobBytes += n;
       jcr->ReadBytes += n;
index 786f9ea6825ec02cef1ba34623aeefedb9550919..1c60be7cf4cacb3fc5cd1766a5f0e3dfdb3a7774 100644 (file)
@@ -58,7 +58,7 @@ Plugin *new_plugin()
 bool load_plugins(void *binfo, void *bfuncs, const char *plugin_dir, const char *type)
 {
    bool found = false;
-#ifndef HAVE_WIN32
+//#ifndef HAVE_WIN32
    t_loadPlugin loadPlugin;
    Plugin *plugin;
    DIR* dp = NULL;
@@ -153,7 +153,7 @@ get_out:
    if (dp) {
       closedir(dp);
    }
-#endif
+//#endif
    return found;
 }
 
@@ -162,7 +162,7 @@ get_out:
  */
 void unload_plugins()
 {
-#ifndef HAVE_WIN32
+//#ifndef HAVE_WIN32
    Plugin *plugin;
 
    if (!plugin_list) {
@@ -179,5 +179,5 @@ void unload_plugins()
    }
    delete plugin_list;
    plugin_list = NULL;
-#endif
+//#endif
 }
index ae60f8328da2d768f16cd3654c9ab675745e3348..be08be96595b666ff1b5721965196852831bcced 100644 (file)
@@ -34,9 +34,7 @@
 #define __PLUGINS_H
 
 #include "bacula.h"
-#ifndef HAVE_WIN32
 #include <dlfcn.h>
-#endif
 #ifdef HAVE_DIRENT_H
 #include <dirent.h>
 #define NAMELEN(dirent) (strlen((dirent)->d_name))
index 57aa818d42f85d8538883a7979996ee6610bf68a..4829148bcfafa01835528bfde8386dc50857b043 100644 (file)
@@ -62,8 +62,13 @@ remove reader/writer in FOPTS????
 
 General:
 09Sep08
+kes  Enable Win32 plugin load code in lib.
+kes  Make Verify code that computes disk checksums use the same
+     algorithm as backup when dealing with sparse files.
+kes  Attempt to run VSS on any systems newer than Vista -- should
+     make it work on Windows Server 2008.
 ebl  Change the new statistic implementation. Remove the UseStatistic
-     directive and add a "update stats [days=...]" command. You can
+     directive and add a 'update stats [days=...]' command. You can
      now decide when copy job records from Job table to JobStat.
      Statistics are much more accurate with this.
 08Sep08
@@ -282,7 +287,7 @@ kes  Fix bug where SD did not ask operator if the device could not
 kes  Add dbuser to DIR conf file (replaces user).
 kes  Add --with-db-password to ./configure
 kes  Fix regress to handle db_password.
-ebl  Add new "status storage slots" that list autochanger
+ebl  Add new 'status storage slots' that list autochanger
      content.
 ebl  Update vtape driver to compile only under Linux.
 ebl  Fix a bug when restoring with a wrong mediatype.