Bacula-users

Re: [Bacula-users] PATCH: Allow Copy Jobs to work within one tape library.

2009-11-18 03:48:24
Subject: Re: [Bacula-users] PATCH: Allow Copy Jobs to work within one tape library.
From: Arno Lehmann <al AT its-lehmann DOT de>
To: bacula-users AT lists.sourceforge DOT net
Date: Wed, 18 Nov 2009 09:43:53 +0100
Hello,

18.11.2009 06:52, Jim Barber wrote:
> Hi.
> 
> A while ago I tried to set up a backup strategy where I defined three pools.
> An incremental pool; a full backup pool; and a copy pool.
> 
> The idea was to run incremental backups forever (except for the first one 
> that would be promoted to a full).
> Then at the end each week consolidate the incremental backups into a full 
> backup using a VirtualFull job.
> Then take a copy of the full backup for off-site storage.
> 
> When using a tape library, I could achieve incremental and virtual full 
> backups okay.
> But I could not run the Copy job because it refused to run, complaining that 
> the read storage is the same as the write storage.
> 
> I looked at the code for migrate.c and compared it to vbackup.c since both 
> have similar concepts.
> I wanted to see why the virtual backup works and the copy won't.
> I found identical code in both, except in the vbackup.c the particular check 
> that fails for migrate.c has been wrapped in #ifdef to remove it.
> Also a FIXME comment is there saying that instead it should just verify that 
> the pools are different.
> 
> Below is a patch to migrate.c to do the same thing as vbackup.c does.
> Is this a feasible patch?

Looks like it - if you tested it, and it works correctly. Don't forget 
to test with only one drive available, in that case the job should 
fail with a reasonable error message... and it might be better to 
patch against the most current git version.

> Would there be any chance of this working its way into the official Bacula 
> source? Or will it cause problems?

I suppose so. You should present the patch (which is *really* simply) 
to bacula-devel, so the regular developers can think about it.

Actually, given the comments and the #ifdef situation, I assume the 
idea was considered, tested, and then disabled for good reasons, but 
with some discussion, and even a regression test (hint :-) Kern et al 
might reconsider it.

I guess there might be some more work needed, but that's a discussion 
for -devel.

Cheers,

Arno

> --- bacula-3.0.3.orig/src/dird/migrate.c
> +++ bacula-3.0.3/src/dird/migrate.c
> @@ -350,11 +350,14 @@
>      Dmsg2(dbglevel, "Read store=%s, write store=%s\n",
>         ((STORE *)jcr->rstorage->first())->name(),
>         ((STORE *)jcr->wstorage->first())->name());
> +   /* ***FIXME***  we really should simply verify that the pools are 
> different */
> +#ifdef xxx
>      if (((STORE *)jcr->rstorage->first())->name() == ((STORE 
> *)jcr->wstorage->first())->name()) {
>         Jmsg(jcr, M_FATAL, 0, _("Read storage \"%s\" same as write 
> storage.\n"),
>              ((STORE *)jcr->rstorage->first())->name());
>         return false;
>      }
> +#endif
>      if (!start_storage_daemon_job(jcr, jcr->rstorage, jcr->wstorage, 
> /*send_bsr*/true)) {
>         return false;
>      }
> 
> At the moment I have a really badly hacked up configuration to try and 
> achieve what I want by using each drive in the library independently.
> It is complicated and messy with lots of work arounds for various scenarios.
> If the above patch is okay then things become much simpler.
> 
> Regards,
> 

-- 
Arno Lehmann
IT-Service Lehmann
Sandstr. 6, 49080 Osnabrück
www.its-lehmann.de

------------------------------------------------------------------------------
Let Crystal Reports handle the reporting - Free Crystal Reports 2008 30-Day 
trial. Simplify your report design, integration and deployment - and focus on 
what you do best, core application coding. Discover what's new with
Crystal Reports now.  http://p.sf.net/sfu/bobj-july
_______________________________________________
Bacula-users mailing list
Bacula-users AT lists.sourceforge DOT net
https://lists.sourceforge.net/lists/listinfo/bacula-users

<Prev in Thread] Current Thread [Next in Thread>