Bacula-users

[Bacula-users] Some bacula drawbacks

2008-08-04 14:51:47
Subject: [Bacula-users] Some bacula drawbacks
From: Attila Fülöp <lichtscheu AT gesindel DOT org>
To: "'bacula-users'" <bacula-users AT lists.sourceforge DOT net>
Date: Mon, 04 Aug 2008 20:49:45 +0200
Hello,

for the benefit of all here are some bacula drawbacks I stumbled
upon, and how to work around them.


1. If you want to run a bacula server on FreeBSD use at least 6.3
   STABLE (RELEASE may work, untested). On earlier releases bacula
   using multiple concurrent jobs will hang randomly under high load.
   This is due to a bug in FreeBSDs libpthread.

2. If restoring "long paths" (ie paths longer than 260 chars) to
   a windows box use an 2.4.2 fd. The 2.2.8 windows fd handles
   long filenames well, but the windows box may bluescreen mid
   restore. This didn't happen with 2.4.2.

3. If using VSS be aware that you can't run multiple concurrent
   jobs on the same client, since multiple VSS jobs, even if
   referring to a different drive (ie c:/ and d:/), block each other.

4. If you want to compile bacula with newer SunStudio 12 compilers,
   you have to workaround a bug in newer CC patch versions: remove
   all volatile bitfields in src/lib/bsock.h. (Patch attached)

There are certainly some more I already forgot about.

HTH

Attila


  *** src/lib/bsock.h.orig      2008-07-28 19:29:38.351136592 +0200
--- src/lib/bsock.h     2008-07-29 14:38:47.404559222 +0200
***************
*** 58,65 ****
     char *m_host;                      /* Host name/IP */
     int m_port;                        /* desired port */
     btimer_t *m_tid;                   /* timer id */
!    volatile bool m_timed_out: 1;      /* timed out in read/write */
!    volatile bool m_terminated: 1;     /* set when BNET_TERMINATE arrives */
     bool m_duped: 1;                   /* set if duped BSOCK */
     bool m_spool: 1;                   /* set for spooling */
  
--- 58,65 ----
     char *m_host;                      /* Host name/IP */
     int m_port;                        /* desired port */
     btimer_t *m_tid;                   /* timer id */
!    volatile bool m_timed_out;         /* timed out in read/write */
!    volatile bool m_terminated;        /* set when BNET_TERMINATE arrives */
     bool m_duped: 1;                   /* set if duped BSOCK */
     bool m_spool: 1;                   /* set for spooling */
  
***************
*** 78,84 ****
     int b_errno;                       /* bsock errno */
     int m_blocking;                    /* blocking state (0 = nonblocking, 1 = 
blocking) */
     volatile int errors;               /* incremented for each error on socket 
*/
!    volatile bool m_suppress_error_msgs: 1; /* set to suppress error messages 
*/
     volatile time_t timer_start;       /* time started read/write */
     volatile time_t timeout;           /* timeout BSOCK after this interval */
     POOLMEM *msg;                      /* message pool buffer */
--- 78,84 ----
     int b_errno;                       /* bsock errno */
     int m_blocking;                    /* blocking state (0 = nonblocking, 1 = 
blocking) */
     volatile int errors;               /* incremented for each error on socket 
*/
!    volatile bool m_suppress_error_msgs; /* set to suppress error messages */
     volatile time_t timer_start;       /* time started read/write */
     volatile time_t timeout;           /* timeout BSOCK after this interval */
     POOLMEM *msg;                      /* message pool buffer */
***************
*** 126,133 ****
     bool is_duped() { return m_duped; };
     bool is_terminated() { return m_terminated; };
     bool is_timed_out() { return m_timed_out; };
!    bool is_stop() { return errors || is_terminated(); }
!    bool is_error() { errno = b_errno; return errors; }
     void set_spooling() { m_spool = true; };
     void clear_spooling() { m_spool = false; };
     void set_duped() { m_duped = true; };
--- 126,133 ----
     bool is_duped() { return m_duped; };
     bool is_terminated() { return m_terminated; };
     bool is_timed_out() { return m_timed_out; };
!    bool is_stop() { return errors || is_terminated(); };
!    bool is_error() { errno = b_errno; return errors; };
     void set_spooling() { m_spool = true; };
     void clear_spooling() { m_spool = false; };
     void set_duped() { m_duped = true; };

-------------------------------------------------------------------------
This SF.Net email is sponsored by the Moblin Your Move Developer's challenge
Build the coolest Linux based applications with Moblin SDK & win great prizes
Grand prize is a trip for two to an Open Source event anywhere in the world
http://moblin-contest.org/redirect.php?banner_id=100&url=/
_______________________________________________
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>