X-Git-Url: https://git.sur5r.net/?a=blobdiff_plain;f=bacula%2Fsrc%2Fstored%2Fbsr.h;h=6267a37f1f16c1191deb8ac36fa51cb90ea0712b;hb=9db867609d49aeb8284b62812e17ae26d212c700;hp=6154d79851c34b74cf5c049ee8079e4d91c4e634;hpb=f3b33c863e725b60b4e3fe1930408833e6ccd64e;p=bacula%2Fbacula diff --git a/bacula/src/stored/bsr.h b/bacula/src/stored/bsr.h index 6154d79851..6267a37f1f 100644 --- a/bacula/src/stored/bsr.h +++ b/bacula/src/stored/bsr.h @@ -7,41 +7,49 @@ * */ /* - 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 and included + 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 + * Formed by Storage daemon from BSR */ -struct s_vol_list { - struct s_vol_list *next; +struct VOL_LIST { + VOL_LIST *next; char VolumeName[MAX_NAME_LENGTH]; - int Slot; + char MediaType[MAX_NAME_LENGTH]; + char device[MAX_NAME_LENGTH]; /* ***FIXME*** use alist here */ + int Slot; + uint32_t start_file; }; -typedef struct s_vol_list VOL_LIST; /* @@ -53,73 +61,93 @@ typedef struct s_vol_list VOL_LIST; * !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! */ -typedef struct s_bsr_client { - struct s_bsr_client *next; +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]; -} BSR_CLIENT; +}; -typedef struct s_bsr_sessid { - struct s_bsr_sessid *next; +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; + bool done; /* local done */ +}; -typedef struct s_bsr_volfile { - struct s_bsr_volfile *next; +struct BSR_VOLFILE { + BSR_VOLFILE *next; uint32_t sfile; /* start file */ uint32_t efile; /* end file */ - int found; -} BSR_VOLFILE; + bool done; /* local done */ +}; -typedef struct s_bsr_findex { - struct s_bsr_findex *next; +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 */ - int found; -} BSR_FINDEX; + bool done; /* local done */ +}; -typedef struct s_bsr_jobid { - struct s_bsr_jobid *next; +struct BSR_JOBID { + BSR_JOBID *next; uint32_t JobId; uint32_t JobId2; - int found; -} BSR_JOBID; +}; -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; +struct BSR_JOB { + BSR_JOB *next; char Job[MAX_NAME_LENGTH]; - int found; -} BSR_JOB; + bool done; /* local done */ +}; -typedef struct s_bsr_stream { - struct s_bsr_stream *next; +struct BSR_STREAM { + BSR_STREAM *next; int32_t stream; /* stream desired */ - int found; -} BSR_STREAM; +}; -typedef struct s_bsr { - struct s_bsr *next; /* pointer to next one */ - int done; /* set when everything found */ - char *VolumeName; - int32_t Slot; /* Slot */ +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_SESSID *sessid; BSR_JOBID *JobId; @@ -129,8 +157,7 @@ typedef struct s_bsr { BSR_JOBTYPE *JobType; BSR_JOBLEVEL *JobLevel; BSR_STREAM *stream; -// FF_PKT *ff; /* include/exclude */ -} BSR; +}; #endif