]> git.sur5r.net Git - bacula/bacula/blobdiff - bacula/src/stored/bsr.h
kes Apply Eric's patch for recycling the Scratch pool.
[bacula/bacula] / bacula / src / stored / bsr.h
index c6728e17fd93d24c7bcf207092cc9a05d00b7368..1758b2bc1f11188b04a11526a24c5832f320f134 100644 (file)
@@ -7,30 +7,50 @@
  *
  */
 /*
-   Copyright (C) 2000, 2001, 2002 Kern Sibbald and John Walker
+   Bacula® - The Network Backup Solution
 
-   This program is free software; you can redistribute it and/or
-   modify it under the terms of the GNU General Public License as
-   published by the Free Software Foundation; either version 2 of
-   the License, or (at your option) any later version.
+   Copyright (C) 2002-2006 Free Software Foundation Europe e.V.
 
-   This program is distributed in the hope that it will be useful,
-   but WITHOUT ANY WARRANTY; without even the implied warranty of
+   The main author of Bacula is Kern Sibbald, with contributions from
+   many others, a complete list can be found in the file AUTHORS.
+   This program is Free Software; you can redistribute it and/or
+   modify it under the terms of version two of the GNU General Public
+   License as published by the Free Software Foundation plus additions
+   that are listed in the file LICENSE.
+
+   This program is distributed in the hope that it will be useful, but
+   WITHOUT ANY WARRANTY; without even the implied warranty of
    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
    General Public License for more details.
 
-   You should have received a copy of the GNU General Public
-   License along with this program; if not, write to the Free
-   Software Foundation, Inc., 59 Temple Place - Suite 330, Boston,
-   MA 02111-1307, USA.
+   You should have received a copy of the GNU General Public License
+   along with this program; if not, write to the Free Software
+   Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
+   02110-1301, USA.
 
- */
+   Bacula® is a registered trademark of John Walker.
+   The licensor of Bacula is the Free Software Foundation Europe
+   (FSFE), Fiduciary Program, Sumatrastrasse 25, 8006 Zürich,
+   Switzerland, email:ftf@fsfeurope.org.
+*/
 
 
 #ifndef __BSR_H
 #define __BSR_H 1
 
-#include "findlib/find.h"
+/*
+ * List of Volume names to be read by Storage daemon.
+ *  Formed by Storage daemon from BSR
+ */
+struct VOL_LIST {
+   VOL_LIST *next;
+   char VolumeName[MAX_NAME_LENGTH];
+   char MediaType[MAX_NAME_LENGTH];
+   char device[MAX_NAME_LENGTH];   /* ***FIXME*** use alist here */
+   int Slot;
+   uint32_t start_file;
+};
+
 
 /*
  * !!!!!!!!!!!!!!!!!! NOTE !!!!!!!!!!!!!!!!!!!!!!!!!!!!!
  * !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
  */
 
-typedef struct s_bsr_client {
-   struct s_bsr_client *next;
-   char *ClientName;
-} BSR_CLIENT;
-
-typedef struct s_bsr_sessid {
-   struct s_bsr_sessid *next;
-   int type;
-   uint32_t sessid1;
+struct BSR_VOLUME {
+   BSR_VOLUME *next;
+   char VolumeName[MAX_NAME_LENGTH];
+   char MediaType[MAX_NAME_LENGTH];
+   char device[MAX_NAME_LENGTH];   /* ***FIXME*** use alist here */
+   int32_t       Slot;                /* Slot */
+};
+
+struct BSR_CLIENT {
+   BSR_CLIENT *next;
+   char ClientName[MAX_NAME_LENGTH];
+};
+
+struct BSR_SESSID {
+   BSR_SESSID *next;
+   uint32_t sessid;
    uint32_t sessid2;
-   int found;
-} BSR_SESSID;
+};
 
-typedef struct s_bsr_sesstime {
-   struct s_bsr_sesstime *next;
+struct BSR_SESSTIME {
+   BSR_SESSTIME *next;
    uint32_t sesstime;
-   int found;
-} BSR_SESSTIME;
-
-typedef struct s_bsr_findex {
-   struct s_bsr_findex *next;
-   int32_t FileIndex;
-   int found;
-} BSR_FINDEX;
-
-typedef struct s_bsr_jobid {
-   struct s_bsr_jobid *next;
+   bool done;                         /* local done */
+};
+
+struct BSR_VOLFILE {
+   BSR_VOLFILE *next;
+   uint32_t sfile;                    /* start file */
+   uint32_t efile;                    /* end file */
+   bool done;                         /* local done */
+};
+
+struct BSR_VOLBLOCK {
+   BSR_VOLBLOCK *next;
+   uint32_t sblock;                   /* start block */
+   uint32_t eblock;                   /* end block */
+   bool done;                         /* local done */
+};
+
+
+struct BSR_FINDEX {
+   BSR_FINDEX *next;
+   int32_t findex;                    /* start file index */
+   int32_t findex2;                   /* end file index */
+   bool done;                         /* local done */
+};
+
+struct BSR_JOBID {
+   BSR_JOBID *next;
    uint32_t JobId;
-   int found;
-} BSR_JOBID;
+   uint32_t JobId2;
+};
 
-typedef struct s_bsr_jobtype {
-   struct s_bsr_jobtype *next;
+struct BSR_JOBTYPE {
+   BSR_JOBTYPE *next;
    uint32_t JobType;
-} BSR_JOBTYPE;
+};
 
-typedef struct s_bsr_joblevel {
-   struct s_bsr_joblevel *next;
+struct BSR_JOBLEVEL {
+   BSR_JOBLEVEL *next;
    uint32_t JobLevel;
-} BSR_JOBLEVEL;
-
-typedef struct s_bsr_job {
-   struct s_bsr_job *next;
-   char *Job;
-   int found;
-} BSR_JOB;
-
-
-typedef struct s_bsr {
-   struct s_bsr *next;                /* pointer to next one */
-   int           done;                /* set when everything found */
-   char         *VolumeName;
-   BSR_CLIENT   *client;
-   BSR_JOB      *job;
-   BSR_SESSID   *sessid;
+};
+
+struct BSR_JOB {
+   BSR_JOB *next;
+   char Job[MAX_NAME_LENGTH];
+   bool done;                         /* local done */
+};
+
+struct BSR_STREAM {
+   BSR_STREAM *next;
+   int32_t stream;                    /* stream desired */
+};
+
+struct BSR {
+   BSR          *next;                /* pointer to next one */
+   BSR          *root;                /* root bsr */
+   bool          reposition;          /* set when any bsr is marked done */
+   bool          mount_next_volume;   /* set when next volume should be mounted */
+   bool          done;                /* set when everything found for this bsr */
+   bool          use_fast_rejection;  /* set if fast rejection can be used */
+   bool          use_positioning;     /* set if we can position the archive */
+   BSR_VOLUME   *volume;
+   uint32_t      count;               /* count of files to restore this bsr */
+   uint32_t      found;               /* count of restored files this bsr */
+   BSR_VOLFILE  *volfile;
+   BSR_VOLBLOCK *volblock;
    BSR_SESSTIME *sesstime;
-   BSR_FINDEX   *FileIndex;
+   BSR_SESSID   *sessid;
    BSR_JOBID    *JobId;
+   BSR_JOB      *job;
+   BSR_CLIENT   *client;
+   BSR_FINDEX   *FileIndex;
    BSR_JOBTYPE  *JobType;
    BSR_JOBLEVEL *JobLevel;
-   FF_PKT *ff;                        /* include/exclude */
-} BSR;
+   BSR_STREAM   *stream;
+};
 
 
 #endif