<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=us-ascii">
<meta name="Generator" content="Microsoft Exchange Server">
<!-- converted from rtf -->
<style><!-- .EmailQuote { margin-left: 1pt; padding-left: 4pt; border-left: #800000 2px solid; } --></style>
</head>
<body>
<font face="Courier New, monospace" size="2">
<div>Package: bacula</div>
<div>Version: 5.0.2-2.2+squeeze1</div>
<div>Severity: normal</div>
<div>Tags: patch</div>
<div><font face="Calibri, sans-serif" size="2"> </font></div>
<div>Debian squeeze</div>
<div>#cat /etc/debian_version</div>
<div>6.0.6</div>
<div> </div>
<div>#dpkg -l bacula\* | grep ^ii | cut -c5-65</div>
<div>bacula-common                   5.0.2-2.2+squeeze1</div>
<div>bacula-common-pgsql             5.0.2-2.2+squeeze1</div>
<div>bacula-console                  5.0.2-2.2+squeeze1</div>
<div>bacula-director-common          5.0.2-2.2+squeeze1</div>
<div>bacula-director-pgsql           5.0.2-2.2+squeeze1</div>
<div>bacula-doc                      5.0.2-1</div>
<div>bacula-fd                       5.0.2-2.2+squeeze1</div>
<div>bacula-sd                       5.0.2-2.2+squeeze1</div>
<div>bacula-sd-pgsql                 5.0.2-2.2+squeeze1</div>
<div><font face="Calibri, sans-serif" size="2"> </font></div>
<div><font face="Calibri, sans-serif" size="2"> </font></div>
<div>03-Nov 00:04 vsrvbck01-dir JobId 35711: Verifying against JobId=35699 Job=srvxen02-Tape.2012-11-02_23.05.01_53</div>
<div>03-Nov 00:04 vsrvbck01-dir JobId 35711: Bootstrap records written to /var/lib/bacula/vsrvbck01-dir.restore.34.bsr</div>
<div>03-Nov 00:04 vsrvbck01-dir JobId 35711: Start Verify JobId=35711 Level=VolumeToCatalog Job=srvxen02-Tape-Verify.2012-11-02_23.10.00_05</div>
<div>03-Nov 00:04 vsrvbck01-dir JobId 35711: Using Device "Drive0_SB5"</div>
<div>03-Nov 00:06 vsrvbck01-sd JobId 35711: Ready to read from volume "HP1054L3" on device "Drive0_SB5" (/dev/nst3).</div>
<div>03-Nov 00:06 vsrvbck01-sd JobId 35711: Forward spacing Volume "HP1054L3" to file:block 147:0.</div>
<div>03-Nov 00:28 vsrvbck01-dir JobId 35711: Warning: The following files are in the Catalog but not on the Volume(s):</div>
<div>03-Nov 00:28 vsrvbck01-dir JobId 35711:       /boot/</div>
<div>03-Nov 00:28 vsrvbck01-dir JobId 35711: Bacula vsrvbck01-dir 5.0.2 (28Apr10): 03-Nov-2012 00:28:50</div>
<div>  Build OS:               x86_64-pc-linux-gnu debian 6.0.6</div>
<div>  JobId:                  35711</div>
<div>  Job:                    srvxen02-Tape-Verify.2012-11-02_23.10.00_05</div>
<div>  FileSet:                None</div>
<div>  Verify Level:           VolumeToCatalog</div>
<div>  Client:                 srvxen02-fd</div>
<div>  Verify JobId:           35699</div>
<div>  Verify Job:             </div>
<div>  Start time:             03-Nov-2012 00:04:44</div>
<div>  End time:               03-Nov-2012 00:28:50</div>
<div>  Files Expected:         371,031</div>
<div>  Files Examined:         371,031</div>
<div>  Non-fatal FD errors:    0</div>
<div>  FD termination status:  OK</div>
<div>  SD termination status:  OK</div>
<div>  Termination:            Verify Differences</div>
<div> </div>
<div>03-Nov 00:28 vsrvbck01-dir JobId 35711: Begin pruning Jobs older than 2 months .</div>
<div>03-Nov 00:28 vsrvbck01-dir JobId 35711: No Jobs found to prune.</div>
<div>03-Nov 00:28 vsrvbck01-dir JobId 35711: Begin pruning Jobs.</div>
<div>03-Nov 00:28 vsrvbck01-dir JobId 35711: No Files found to prune.</div>
<div>03-Nov 00:28 vsrvbck01-dir JobId 35711: End auto prune.</div>
<div><font face="Calibri, sans-serif" size="2"> </font></div>
<div><font face="Calibri, sans-serif" size="2"> </font></div>
<div>The problem is that the File table in the catalog contains two entries for </div>
<div>All of the inner mounted filesystems (/boot etc), one which would normally be </div>
<div>Used to recreate the mount point and another for the top level directory of the</div>
<div>filesystem itself. This confuses the VolumeToCatalog verification code.</div>
<div>It looks like it was broken by the fix for bacula_bug#1524.</div>
<div><font face="Calibri, sans-serif" size="2"> </font></div>
<div><font face="Calibri, sans-serif" size="2"><a href="http://bugs.bacula.org/view.php?id=1661"><font face="Courier New, monospace" size="2" color="#0000FF"><u>http://bugs.bacula.org/view.php?id=1661</u></font></a></font></div>
<div><font face="Calibri, sans-serif" size="2"> </font></div>
<div><font face="Calibri, sans-serif" size="2"> </font></div>
<div>In L_VERIFY_VOLUME_TO_CATALOG, it needs to check every FileIndex to ensure</div>
<div>that the catalog is in the same order as the volume.  That also correctly</div>
<div>handles duplicate names, which have different values for FileIndex.</div>
<div><font face="Calibri, sans-serif" size="2" color="#1F497D"> </font></div>
<div><font face="Calibri, sans-serif" size="2" color="#1F497D"> </font></div>
<div><font face="Calibri, sans-serif" size="2" color="#1F497D"> </font></div>
<div><font face="Calibri, sans-serif" size="2" color="#1F497D"> </font></div>
<div><font face="Calibri, sans-serif" size="2"><a href="http://bacula.git.sourceforge.net/git/gitweb.cgi?p=bacula/bacula;a=commit;h=626d681b782437c44b12a9e77627312260544062"><font color="#0000FF"><u>http://bacula.git.sourceforge.net/git/gitweb.cgi?p=bacula/bacula;a=commit;h=626d681b782437c44b12a9e77627312260544062</u></font></a></font></div>
<div><font face="Calibri, sans-serif" size="2" color="#1F497D"> </font></div>
<div><font face="Calibri, sans-serif" size="2">From 626d681b782437c44b12a9e77627312260544062 Mon Sep 17 00:00:00 2001</font></div>
<div><font face="Calibri, sans-serif" size="2">From: Martin Simmons <<a href="mailto:martin@lispworks.com">martin@lispworks.com</a>></font></div>
<div><font face="Calibri, sans-serif" size="2">Date: Wed, 5 Jan 2011 10:19:22 +0100</font></div>
<div><font face="Calibri, sans-serif" size="2">Subject: [PATCH] Fix #1661 about verify differences with VERIFY_VOLUME_TO_CATALOG</font></div>
<div><font face="Calibri, sans-serif" size="2"> </font></div>
<div><font face="Calibri, sans-serif" size="2">In L_VERIFY_VOLUME_TO_CATALOG, it needs to check every FileIndex to ensure that the catalog is in the same order as the volume.  That also correctly handles duplicate names, which have different values for FileIndex.</font></div>
<div><font face="Calibri, sans-serif" size="2"> </font></div>
<div><font face="Calibri, sans-serif" size="2">This bug was introduced when fixing #1524</font></div>
<div><font face="Calibri, sans-serif" size="2">---</font></div>
<div><font face="Calibri, sans-serif" size="2"> bacula/src/cats/sql_get.c |   10 +++++++++-</font></div>
<div><font face="Calibri, sans-serif" size="2"> 1 files changed, 9 insertions(+), 1 deletions(-)</font></div>
<div><font face="Calibri, sans-serif" size="2"> </font></div>
<div><font face="Calibri, sans-serif" size="2">diff --git a/bacula/src/cats/sql_get.c b/bacula/src/cats/sql_get.c index e4ebfba..d3d21a2 100644</font></div>
<div><font face="Calibri, sans-serif" size="2">--- a/bacula/src/cats/sql_get.c</font></div>
<div><font face="Calibri, sans-serif" size="2">+++ b/bacula/src/cats/sql_get.c</font></div>
<div><font face="Calibri, sans-serif" size="2">@@ -105,7 +105,7 @@ int db_get_file_attributes_record(JCR *jcr, B_DB *mdb, char *fname, JOB_DBR *jr,</font></div>
<div><font face="Calibri, sans-serif" size="2">  *    use includes the directory twice.  In this case, Verify </font></div>
<div><font face="Calibri, sans-serif" size="2">  *    VolumeToCatalog fails because we have two copies in the catalog, </font></div>
<div><font face="Calibri, sans-serif" size="2">  *    and only the first one is marked (twice).  So, when calling from Verify, </font></div>
<div><font face="Calibri, sans-serif" size="2">- *    jr is not NULL and we know jr->FileIndex is the fileindex</font></div>
<div><font face="Calibri, sans-serif" size="2">+ *    VolumeToCatalog jr is not NULL and we know jr->FileIndex is the fileindex</font></div>
<div><font face="Calibri, sans-serif" size="2">  *    of the version of the directory/file we actually want and do</font></div>
<div><font face="Calibri, sans-serif" size="2">  *    a more explicit SQL search.</font></div>
<div><font face="Calibri, sans-serif" size="2">  */</font></div>
<div><font face="Calibri, sans-serif" size="2">@@ -125,6 +125,14 @@ int db_get_file_record(JCR *jcr, B_DB *mdb, JOB_DBR *jr, FILE_DBR *fdbr)</font></div>
<div><font face="Calibri, sans-serif" size="2">       edit_int64(fdbr->PathId, ed1), </font></div>
<div><font face="Calibri, sans-serif" size="2">       edit_int64(fdbr->FilenameId, ed2), </font></div>
<div><font face="Calibri, sans-serif" size="2">       edit_int64(jr->ClientId,ed3));</font></div>
<div><font face="Calibri, sans-serif" size="2">+   } else if (jcr->getJobLevel() == L_VERIFY_VOLUME_TO_CATALOG) {</font></div>
<div><font face="Calibri, sans-serif" size="2">+      Mmsg(mdb->cmd,</font></div>
<div><font face="Calibri, sans-serif" size="2">+           "SELECT FileId, LStat, MD5 FROM File WHERE File.JobId=%s AND File.PathId=%s AND "</font></div>
<div><font face="Calibri, sans-serif" size="2">+           "File.FilenameId=%s AND File.FileIndex=%u", </font></div>
<div><font face="Calibri, sans-serif" size="2">+           edit_int64(fdbr->JobId, ed1), </font></div>
<div><font face="Calibri, sans-serif" size="2">+           edit_int64(fdbr->PathId, ed2), </font></div>
<div><font face="Calibri, sans-serif" size="2">+           edit_int64(fdbr->FilenameId,ed3),</font></div>
<div><font face="Calibri, sans-serif" size="2">+           jr->FileIndex);</font></div>
<div><font face="Calibri, sans-serif" size="2">    } else {</font></div>
<div><font face="Calibri, sans-serif" size="2">       Mmsg(mdb->cmd,</font></div>
<div><font face="Calibri, sans-serif" size="2"> "SELECT FileId, LStat, MD5 FROM File WHERE File.JobId=%s AND File.PathId=%s AND "</font></div>
<div><font face="Calibri, sans-serif" size="2">--</font></div>
<div><font face="Calibri, sans-serif" size="2">1.7.4.1</font></div>
<div><font face="Calibri, sans-serif" size="2"> </font></div>
<div><font face="Calibri, sans-serif" size="2"> </font></div>
</font>
</body>
</html>