X-Git-Url: https://git.sur5r.net/?a=blobdiff_plain;f=bacula%2Fsrc%2Fjcr.h;h=6f8994fe518caf6b1c5ab075d0f7d19ad49fa605;hb=2ddf15df18ef2d743cac00e98cef8b84899a8d9f;hp=e8b293d1ed42f2f2b089b0e94f48790da10d4b13;hpb=d1152dbcd6f2439bb23d27e4a15db1f3e9475d70;p=bacula%2Fbacula diff --git a/bacula/src/jcr.h b/bacula/src/jcr.h index e8b293d1ed..6f8994fe51 100644 --- a/bacula/src/jcr.h +++ b/bacula/src/jcr.h @@ -40,8 +40,10 @@ #define L_VERIFY_CATALOG 'C' /* verify from catalog */ #define L_VERIFY_INIT 'V' /* verify save (init DB) */ #define L_VERIFY_VOLUME_TO_CATALOG 'O' /* verify Volume to catalog entries */ +#define L_VERIFY_DISK_TO_CATALOG 'd' /* verify Disk attributes to catalog */ #define L_VERIFY_DATA 'A' /* verify data on volume */ #define L_BASE 'B' /* Base level job */ +#define L_NONE ' ' /* None, for Restore and Admin */ /* Job Types. These are stored in the DB */ @@ -49,6 +51,7 @@ #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_ADMIN 'D' /* admin job */ #define JT_ARCHIVE 'A' @@ -71,6 +74,7 @@ #define JS_WaitClientRes 'c' /* Waiting for Client resource */ #define JS_WaitMaxJobs 'd' /* Waiting for maximum jobs */ #define JS_WaitStartTime 't' /* Waiting for start time */ +#define JS_WaitPriority 'p' /* Waiting for higher priority jobs to finish */ #define job_canceled(jcr) \ (jcr->JobStatus == JS_Canceled || \ @@ -106,6 +110,7 @@ struct JCR { volatile int JobStatus; /* ready, running, blocked, terminated */ int JobType; /* backup, restore, verify ... */ int JobLevel; /* Job level */ + int JobPriority; /* Job priority */ int authenticated; /* set when client authenticated */ time_t sched_time; /* job schedule time, i.e. when it should start */ time_t start_time; /* when job actually started */ @@ -119,6 +124,8 @@ struct JCR { uint32_t ClientId; /* Client associated with Job */ char *where; /* prefix to restore files to */ int prefix_links; /* Prefix links with Where path */ + int cached_pnl; /* cached path length */ + POOLMEM *cached_path; /* cached path */ /* Daemon specific part of JCR */ /* This should be empty in the library */ @@ -150,11 +157,12 @@ struct JCR { POOLMEM *fname; /* name to put into catalog */ int fn_printed; /* printed filename */ POOLMEM *stime; /* start time for incremental/differential */ - JOB_DBR jr; /* Job record in Database */ + JOB_DBR jr; /* Job DB record for current job */ + JOB_DBR *verify_jr; /* Pointer to target job */ uint32_t RestoreJobId; /* Id specified by UA */ POOLMEM *client_uname; /* client uname */ int replace; /* Replace option */ - int acquired_resource_locks; /* set if resource locks acquired */ + bool acquired_resource_locks; /* set if resource locks acquired */ int NumVols; /* Number of Volume used in pool */ int reschedule_count; /* Number of times rescheduled */ #endif /* DIRECTOR_DAEMON */ @@ -170,7 +178,6 @@ struct JCR { int mtime_only; /* compare only mtime and not ctime as well */ int listing; /* job listing in estimate */ long Ticket; /* Ticket */ - int save_level; /* save level */ char *big_buf; /* I/O buffer */ POOLMEM *compress_buf; /* Compression buffer */ int32_t compress_buf_size; /* Length of compression buffer */ @@ -184,6 +191,7 @@ struct JCR { uint32_t EndBlock; pthread_t heartbeat_id; /* id of heartbeat thread */ volatile BSOCK *hb_bsock; /* duped SD socket */ + POOLMEM *RunAfterJob; /* Command to run after job */ #endif /* FILE_DAEMON */ @@ -221,6 +229,7 @@ struct JCR { uint32_t EndBlock; /* Ending block written */ bool NewVol; /* set when new Volume mounted */ bool WroteVol; /* set when Volume written */ + bool NewFile; /* set when EOF written */ int CurVol; /* Current Volume count */ uint32_t FileId; /* Last file id inserted */ @@ -245,9 +254,11 @@ struct JCR { * info on the last job run. */ struct s_last_job { + dlink link; int NumJobs; int JobType; int JobStatus; + int JobLevel; uint32_t JobId; uint32_t VolSessionId; uint32_t VolSessionTime; @@ -258,10 +269,12 @@ struct s_last_job { char Job[MAX_NAME_LENGTH]; }; -extern struct s_last_job last_job; +extern struct s_last_job last_job; +extern dlist *last_jobs; /* The following routines are found in lib/jcr.c */ +extern bool init_jcr_subsystem(void); extern JCR *new_jcr(int size, JCR_free_HANDLER *daemon_free_jcr); extern void free_locked_jcr(JCR *jcr); extern JCR *get_jcr_by_id(uint32_t JobId);