What version of Bacula are you running?   
Are you running with PreferMountedVolumes=no?

If you are running 5.0.0, would you please try 5.0.1 and report back if you 
have the same problem.

Best regards,

Kern


On Wednesday 03 March 2010 05:26:44 Joseph Dickson wrote:
> Greetings..
>
> I've been having a concurrency problem with my fully disk-based autochanger
> setup, which is resulting in volumes being marked as Error status
> erroneously.  As near as I can tell, the situation which leads up to this
> is:
>
> 1:  the volume that is decided upon is already loaded in a different drive
> than has been assigned to the job 2:  multiple jobs are running competing
> for volumes within the same pool 3:  Maximum Concurrent Jobs is set to 1 on
> each Device entry
>
> In digging through the code, it looks like vol_mgr.c has some special case
> code to deal with the case where a volume is being swapped from one drive
> to the other.  However, it looks to me like the code that allows all that
> to happen (namely, keeping the volume in the vol_list even after
> volume_unused is called, so that the code in reserve_volume can detect that
> the volume is already loaded in a drive in the changer) is specifically
> disabled for disk devices:
>
> vol_mgr.c in volume_unused at around line # 587:
>
>    /*
>     * If this is a tape, we do not free the volume, rather we wait
>     *  until the autoloader unloads it, or until another tape is
>     *  explicitly read in this drive. This allows the SD to remember
>     *  where the tapes are or last were.
>     */
>    Dmsg4(dbglvl, "=== set not reserved vol=%s num_writers=%d
> dev_reserved=%d dev=%s\n", dev->vol->vol_name, dev->num_writers,
> dev->num_reserved(), dev->print_name()); Dmsg1(dbglvl, "=== clear in_use
> vol=%s\n", dev->vol->vol_name); dev->vol->clear_in_use();
>    if (dev->is_tape() || dev->is_autochanger()) {
>       return true;
>    } else {
>       /*
>        * Note, this frees the volume reservation entry, but the
>        *   file descriptor remains open with the OS.
>        */
>       return free_volume(dev);
>    }
>
> It seems to me (and my admittedly extremely shallow understanding of the
> code so far) that either this code should be changed to treat disk volumes
> the same, OR code should be added to unload a disk based autochanger drive
> when the volume is done being used.
>
> Please forgive me if I'm way off base.. just trying to track down the cause
> of my problem :(   A (rather length) trace output of a series of jobs which
> illustrates the problem I'm having can be found at:
> http://pastebin.com/raw.php?i=Ne0XJbBh
>
> Any thoughts or ideas on where to keep looking?
>
> Cheers,
>
> Joe



------------------------------------------------------------------------------
Download Intel® Parallel Studio Eval
Try the new software tools for yourself. Speed compiling, find bugs
proactively, and fine-tune applications for parallel performance.
See why Intel Parallel Studio got high marks during beta.
http://p.sf.net/sfu/intel-sw-dev
_______________________________________________
Bacula-devel mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/bacula-devel

Reply via email to