Hi All,<br>
<br>
Here is a patch that I have been using for less than a day. However it has been tested several times during that period with both artificial and normal test cases.<br>
<br>
The version of dirvish supplied in Ubuntu 9.10 and 
10.04 will allow backups to overlap if it takes longer to backup an image than the interval between snapshots. There was some traffic in the mailing list back in 2008 regarding this, but nothing was ever resolved.<br><br>

This is a simple patch which causes dirvish to exit if there is already a backup running on the same vault. I considered waiting for the backup to complete before continuing, but that simply swaps one type of bad behavior for another by stacking up a series of pending backups in the worst case. The behavior I chose to implement simply skips a scheduled backup. It has the added benefit that other backups scheduled via dirvish-runall will run as before.<br>

<br>The lock_file used contains the PID of the instance of dirvish, so you can use ps to check against the PID in the file if things seem hung up.<br><br>You can also turn off snapshots for any specific vault with the command:<br>

    touch lock_file<br>in the dirvish directory inside that vault, assuming that there isn&#39;t already a snapshot in progress.<br><br>
The version of dirvish shipped with Ubuntu 10.04 has this identifier near the beginning of the file:<br>
<br>#       $Id: <a href="http://dirvish.pl" target="_blank">dirvish.pl</a>,v 12.0 2004/02/25 02:42:15 jw Exp $  $Name: Dirvish-1_2 $<br><br>The context diff follows:<br>
<br>
---<br>
<br>
diff -c dirvish.original dirvish<br>*** dirvish.original    2008-05-05 10:04:03.000000000 +0200<br>--- dirvish    2011-01-02 12:03:36.198544979 +0100<br>***************<br>*** 456,461 ****<br>--- 456,473 ----<br>  <br>  if (!$$Options{&#39;no-run&#39;})<br>

  {<br>+     $lock_file = &quot;$vault/dirvish/lock_file&quot;;<br>+     if (! -f $lock_file)<br>+     {<br>+         open(LOCK, &quot;+&gt;&quot;, $lock_file) or seppuku 150, &quot;cannot create $lock_file&quot;;<br>+         printf LOCK $$;<br>

+         close(LOCK);<br>+     }<br>+     else<br>+     {<br>+             seppuku 151, &quot;$lock_file already exists&quot;;<br>+     }<br>+ <br>      mkdir &quot;$vault/$image&quot;, 0700<br>          or seppuku 230, &quot;mkdir $vault/$image failed&quot;;<br>

      mkdir $destree, 0755;<br>***************<br>*** 760,765 ****<br>--- 772,779 ----<br>      }<br>  }<br>  <br>+ unlink($lock_file);<br>+ <br>  if($status{fatal})<br>  {<br>      system (&quot;rm -rf $destree&quot;);<br>


<br>
---<br>
<br>
I felt it was about time I contributed something back to the community 
again. Please feel free to use this patch or criticize it as you see 
fit. It works for me.<br>
<br>
John