*
* Version $Id$
*/
-
/*
- Copyright (C) 2000-2004 Kern Sibbald and John Walker
+ Copyright (C) 2000-2005 Kern Sibbald
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.
+ modify it under the terms of the GNU General Public License
+ version 2 as ammended with additional clauses defined in the
+ file LICENSE in the main source directory.
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.
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ the file LICENSE for additional details.
*/
+
#ifndef __JCR_H_
#define __JCR_H_ 1
#define JT_VERIFY 'V' /* Verify Job */
#define JT_RESTORE 'R' /* Restore Job */
#define JT_CONSOLE 'C' /* console program */
-#define JT_SYSTEM 'S' /* internal system "job" */
+#define JT_SYSTEM 'I' /* internal system "job" */
#define JT_ADMIN 'D' /* admin job */
#define JT_ARCHIVE 'A' /* Archive Job */
#define JT_COPY 'Y' /* Copy Job */
#define JT_MIGRATION 'M' /* Migration Job */
+#define JT_SCAN 'S' /* Scan Job */
/* Job Status. Some of these are stored in the DB */
#define JS_Created 'C' /* created but not yet running */
#define foreach_jcr(jcr) \
for ((jcr)=NULL; ((jcr)=get_next_jcr(jcr)); )
+#define SD_APPEND 1
+#define SD_READ 0
-
+/* Forward referenced structures */
struct JCR;
+struct FF_PKT;
+
typedef void (JCR_free_HANDLER)(JCR *jcr);
/* Job Control Record (JCR) */
POOLMEM *VolumeName; /* Volume name desired -- pool_memory */
POOLMEM *errmsg; /* edited error message */
char Job[MAX_NAME_LENGTH]; /* Unique name of this Job */
+ char event[MAX_NAME_LENGTH]; /* Current event */
uint32_t JobId; /* Director's JobId */
uint32_t VolSessionId;
uint32_t VolSessionTime;
time_t end_time; /* job end time */
POOLMEM *client_name; /* client name */
POOLMEM *RestoreBootstrap; /* Bootstrap file to restore */
+ POOLMEM *stime; /* start time for incremental/differential */
char *sd_auth_key; /* SD auth key */
MSGS *jcr_msgs; /* Copy of message resource -- actually used */
uint32_t ClientId; /* Client associated with Job */
bool prefix_links; /* Prefix links with Where path */
bool gui; /* set if gui using console */
bool authenticated; /* set when client authenticated */
+ void *Python_job; /* Python Job Object */
+ void *Python_events; /* Python Events Object */
+
+ bool cached_attribute; /* set if attribute is cached */
+ POOLMEM *attr; /* Attribute string from SD */
/* Daemon specific part of JCR */
/* This should be empty in the library */
#ifdef DIRECTOR_DAEMON
-#define MAX_STORE 2
/* Director Daemon specific part of JCR */
pthread_t SD_msg_chan; /* Message channel thread id */
pthread_cond_t term_wait; /* Wait for job termination */
BSOCK *ua; /* User agent */
JOB *job; /* Job resource */
JOB *verify_job; /* Job resource of verify target job */
- alist *storage[MAX_STORE]; /* Storage possibilities */
+ alist *storage; /* Storage possibilities */
STORE *store; /* Storage daemon selected */
CLIENT *client; /* Client resource */
POOL *pool; /* Pool resource */
FileId_t FileId; /* Last file id inserted */
uint32_t FileIndex; /* Last FileIndex processed */
POOLMEM *fname; /* name to put into catalog */
- POOLMEM *stime; /* start time for incremental/differential */
JOB_DBR jr; /* Job DB record for current job */
- JOB_DBR *verify_jr; /* Pointer to target job */
+ JOB_DBR target_jr; /* target job */
+ char FSCreateTime[MAX_TIME_LENGTH]; /* FileSet CreateTime as returned from DB */
+ char since[MAX_TIME_LENGTH]; /* since time */
uint32_t RestoreJobId; /* Id specified by UA */
POOLMEM *client_uname; /* client uname */
int replace; /* Replace option */
- int saveMaxConcurrentJobs; /* save for restore jobs */
int NumVols; /* Number of Volume used in pool */
int reschedule_count; /* Number of times rescheduled */
bool spool_data; /* Spool data in SD */
bool acquired_resource_locks; /* set if resource locks acquired */
bool term_wait_inited; /* Set when cond var inited */
bool fn_printed; /* printed filename */
+ bool write_part_after_job; /* Write part after job in SD */
+ bool needs_sd; /* set if SD needed by Job */
+ bool cloned; /* set if cloned */
+ bool unlink_bsr; /* Unlink bsr file created */
+ ATTR_DBR ar; /* DB attribute record */
#endif /* DIRECTOR_DAEMON */
int32_t compress_buf_size; /* Length of compression buffer */
int replace; /* Replace options */
int buf_size; /* length of buffer */
- void *ff; /* Find Files packet */
+ FF_PKT *ff; /* Find Files packet */
char stored_addr[MAX_NAME_LENGTH]; /* storage daemon address */
uint32_t StartFile;
uint32_t EndFile;
uint32_t EndBlock;
pthread_t heartbeat_id; /* id of heartbeat thread */
volatile BSOCK *hb_bsock; /* duped SD socket */
+ volatile BSOCK *hb_dir_bsock; /* duped DIR socket */
POOLMEM *RunAfterJob; /* Command to run after job */
DIRRES* director; /* Director resource */
#endif /* FILE_DAEMON */
pthread_cond_t job_start_wait; /* Wait for FD to start Job */
int type;
DCR *dcr; /* device context record */
- DEVRES *device; /* device resource to use */
+ alist *dcrs; /* list of dcrs open */
POOLMEM *job_name; /* base Job name (not unique) */
POOLMEM *fileset_name; /* FileSet */
POOLMEM *fileset_md5; /* MD5 for FileSet */
bool spool_data; /* set to spool data */
int CurVol; /* Current Volume count */
DIRRES* director; /* Director resource */
-
+ bool write_part_after_job; /* Set to write part after job */
+ bool NewVolEachJob; /* Allow using new volume */
+
uint32_t FileId; /* Last file id inserted */
/* Parmaters for Open Read Session */
BSR *bsr; /* Bootstrap record -- has everything */
+ bool mount_next_volume; /* set to cause next volume mount */
uint32_t read_VolSessionId;
uint32_t read_VolSessionTime;
uint32_t read_StartFile;
uint32_t read_EndFile;
uint32_t read_StartBlock;
uint32_t read_EndBlock;
+ /* Device wait times */
+ int min_wait;
+ int max_wait;
+ int max_num_wait;
+ int wait_sec;
+ int rem_wait_sec;
+ int num_wait;
#endif /* STORAGE_DAEMON */