Bacula-users

Re: [Bacula-users] Restoring large directory does not work

2009-06-25 14:31:46
Subject: Re: [Bacula-users] Restoring large directory does not work
From: Martin Simmons <martin AT lispworks DOT com>
To: bacula-users AT lists.sourceforge DOT net
Date: Thu, 25 Jun 2009 19:25:10 +0100
>>>>> On Wed, 24 Jun 2009 13:59:26 -0700, mehma sarja said:
> 
> Thanks for all your help you guys. I am impressed with the level of
> expertise here!
> 
> > Error accessing memory address 0x7fffffbff000: Bad address.
> > > #0  0x000000000040c043 in add_findex ()
> >
> > The function add_findex is interesting, but I think like your bacula-dir
> > was
> >
> > Try the following gdb commands (I assume you are running 64-bit FreeBSD):
> >
> > break *add_findex
> > commands
> > printf "arguments: %x %x %x\n", $rdi, $rsi, $rdx
> > end
> > continue
> >
> > When it stops, enter the continue command again and time how long it takes
> > before it stops again.
> >
> > Do this a few times and post the results (including the "arguments:"
> > output).
> >
> 
> Yes, it is FreeBSD 64 bit. The continue command comes right back with these
> arguments:
> 
> Breakpoint 1, 0x000000000040bfc0 in add_findex ()
> arguments: 1b17068 a0 5fe00b
> arguments: 1b17068 a0 5fe00b
> arguments: 1b17068 a0 5fe00b
> arguments: 1b17068 a0 5fe00b
> (gdb) continue
> Continuing.
> 
> Breakpoint 1, 0x000000000040bfc0 in add_findex ()
> arguments: 1b17068 a0 5fe039
> arguments: 1b17068 a0 5fe039
> arguments: 1b17068 a0 5fe039
> arguments: 1b17068 a0 5fe039
> (gdb) continue
> Continuing.
> 
> Breakpoint 1, 0x000000000040bfc0 in add_findex ()
> arguments: 1b17068 a0 5fe055
> arguments: 1b17068 a0 5fe055
> arguments: 1b17068 a0 5fe055
> arguments: 1b17068 a0 5fe055
> (gdb) continue
> Continuing.
> 
> Breakpoint 1, 0x000000000040bfc0 in add_findex ()
> arguments: 1b17068 a0 5fe060
> arguments: 1b17068 a0 5fe060
> arguments: 1b17068 a0 5fe060
> arguments: 1b17068 a0 5fe060
> (gdb) continue
> Continuing.
> 
> Breakpoint 1, 0x000000000040bfc0 in add_findex ()
> arguments: 1b17068 a0 5fe071
> arguments: 1b17068 a0 5fe071
> arguments: 1b17068 a0 5fe071
> arguments: 1b17068 a0 5fe071
> (gdb) continue
> Continuing.
> 
> Breakpoint 1, 0x000000000040bfc0 in add_findex ()
> arguments: 1b17068 a0 5fe079
> arguments: 1b17068 a0 5fe079
> arguments: 1b17068 a0 5fe079
> arguments: 1b17068 a0 5fe079
> (gdb) continue
> Continuing.
> 
> Breakpoint 1, 0x000000000040bfc0 in add_findex ()
> arguments: 1b17068 a0 5fe0ac
> arguments: 1b17068 a0 5fe0ac
> arguments: 1b17068 a0 5fe0ac
> arguments: 1b17068 a0 5fe0ac

OK, this shows why it is slow.  The algorithm in add_findex is only efficient
when called with consecutive index values (the third number printed).

The code for "restore all" in 2.4.4 doesn't do that, so it can take a very
long time to complete.  This was fixed in later version, so I think the best
solution is to upgrade Bacula.

__Martin

------------------------------------------------------------------------------
_______________________________________________
Bacula-users mailing list
Bacula-users AT lists.sourceforge DOT net
https://lists.sourceforge.net/lists/listinfo/bacula-users