git-svn-id: https://bacula.svn.sourceforge.net/svnroot/bacula/trunk@639
91ce42f0-d328-0410-95d8-
f526ca767f89
sched_pkt = (wait_pkt *)malloc(sizeof(wait_pkt));
sched_pkt->jcr = jcr;
sched_pkt->jq = jq;
sched_pkt = (wait_pkt *)malloc(sizeof(wait_pkt));
sched_pkt->jcr = jcr;
sched_pkt->jq = jq;
- if ((stat = pthread_create(&id, &jq->attr, sched_wait, (void *)sched_pkt)) != 0) {
- return stat;
- }
+ stat = pthread_create(&id, &jq->attr, sched_wait, (void *)sched_pkt);
+ return stat;
}
if ((stat = pthread_mutex_lock(&jq->mutex)) != 0) {
}
if ((stat = pthread_mutex_lock(&jq->mutex)) != 0) {
char *job_name, *level_name, *jid, *store_name, *pool_name;
char *where, *fileset_name, *client_name, *bootstrap, *replace;
char *when;
char *job_name, *level_name, *jid, *store_name, *pool_name;
char *where, *fileset_name, *client_name, *bootstrap, *replace;
char *when;
int i, j, found, opt;
JOB *job = NULL;
STORE *store = NULL;
CLIENT *client = NULL;
FILESET *fileset = NULL;
POOL *pool = NULL;
int i, j, found, opt;
JOB *job = NULL;
STORE *store = NULL;
CLIENT *client = NULL;
FILESET *fileset = NULL;
POOL *pool = NULL;
+ static char *kw[] = { /* command line arguments */
N_("job"),
N_("jobid"),
N_("client"),
N_("job"),
N_("jobid"),
N_("client"),
N_("bootstrap"),
N_("replace"),
N_("when"),
N_("bootstrap"),
N_("replace"),
N_("when"),
- N_("yes"), /* 11 -- see below */
+ N_("priority"),
+ N_("yes"), /* 12 -- see below */
NULL};
if (!open_db(ua)) {
NULL};
if (!open_db(ua)) {
when = ua->argv[i];
found = True;
break;
when = ua->argv[i];
found = True;
break;
+ case 11: /* Priority */
+ if (Priority) {
+ bsendmsg(ua, _("Priority specified twice.\n"));
+ return 1;
+ }
+ Priority = atoi(ua->argv[i]);
+ if (Priority <= 0) {
+ bsendmsg(ua, _("Priority must be positive nonzero setting it to 10.\n"));
+ Priority = 10;
+ }
+ break;
+ case 12: /* yes */
found = True;
break;
default:
found = True;
break;
default:
jcr->replace = REPLACE_ALWAYS;
}
jcr->replace = REPLACE_ALWAYS;
}
+ if (Priority) {
+ jcr->JobPriority = Priority;
+ }
+
try_again:
replace = ReplaceOptions[0].name;
for (i=0; ReplaceOptions[i].name; i++) {
try_again:
replace = ReplaceOptions[0].name;
for (i=0; ReplaceOptions[i].name; i++) {
FileSet: %s\n\
Client: %s\n\
Storage: %s\n\
FileSet: %s\n\
Client: %s\n\
Storage: %s\n\
+When: %s\n\
+Priority: %d\n"),
_("Admin"),
job->hdr.name,
jcr->fileset->hdr.name,
NPRT(jcr->client->hdr.name),
NPRT(jcr->store->hdr.name),
_("Admin"),
job->hdr.name,
jcr->fileset->hdr.name,
NPRT(jcr->client->hdr.name),
NPRT(jcr->store->hdr.name),
- bstrutime(dt, sizeof(dt), jcr->sched_time));
+ bstrutime(dt, sizeof(dt), jcr->sched_time),
+ jcr->JobPriority);
jcr->JobLevel = L_FULL;
break;
case JT_BACKUP:
jcr->JobLevel = L_FULL;
break;
case JT_BACKUP:
Client: %s\n\
Storage: %s\n\
Pool: %s\n\
Client: %s\n\
Storage: %s\n\
Pool: %s\n\
+When: %s\n\
+Priority: %d\n"),
jcr->JobType==JT_BACKUP?_("Backup"):_("Verify"),
job->hdr.name,
jcr->fileset->hdr.name,
jcr->JobType==JT_BACKUP?_("Backup"):_("Verify"),
job->hdr.name,
jcr->fileset->hdr.name,
jcr->client->hdr.name,
jcr->store->hdr.name,
NPRT(jcr->pool->hdr.name),
jcr->client->hdr.name,
jcr->store->hdr.name,
NPRT(jcr->pool->hdr.name),
- bstrutime(dt, sizeof(dt), jcr->sched_time));
+ bstrutime(dt, sizeof(dt), jcr->sched_time),
+ jcr->JobPriority);
break;
case JT_RESTORE:
if (jcr->RestoreJobId == 0 && !jcr->RestoreBootstrap) {
break;
case JT_RESTORE:
if (jcr->RestoreJobId == 0 && !jcr->RestoreBootstrap) {
FileSet: %s\n\
Client: %s\n\
Storage: %s\n\
FileSet: %s\n\
Client: %s\n\
Storage: %s\n\
+When: %s\n\
+Priority: %d\n"),
job->hdr.name,
NPRT(jcr->RestoreBootstrap),
jcr->where?jcr->where:NPRT(job->RestoreWhere),
job->hdr.name,
NPRT(jcr->RestoreBootstrap),
jcr->where?jcr->where:NPRT(job->RestoreWhere),
jcr->fileset->hdr.name,
jcr->client->hdr.name,
jcr->store->hdr.name,
jcr->fileset->hdr.name,
jcr->client->hdr.name,
jcr->store->hdr.name,
- bstrutime(dt, sizeof(dt), jcr->sched_time));
+ bstrutime(dt, sizeof(dt), jcr->sched_time),
+ jcr->JobPriority);
} else {
bsendmsg(ua, _("Run Restore job\n\
JobName: %s\n\
} else {
bsendmsg(ua, _("Run Restore job\n\
JobName: %s\n\
Client: %s\n\
Storage: %s\n\
JobId: %s\n\
Client: %s\n\
Storage: %s\n\
JobId: %s\n\
+When: %s\n\
+Priority: %d\n"),
job->hdr.name,
NPRT(jcr->RestoreBootstrap),
jcr->where?jcr->where:NPRT(job->RestoreWhere),
job->hdr.name,
NPRT(jcr->RestoreBootstrap),
jcr->where?jcr->where:NPRT(job->RestoreWhere),
jcr->client->hdr.name,
jcr->store->hdr.name,
jcr->RestoreJobId==0?"*None*":edit_uint64(jcr->RestoreJobId, ec1),
jcr->client->hdr.name,
jcr->store->hdr.name,
jcr->RestoreJobId==0?"*None*":edit_uint64(jcr->RestoreJobId, ec1),
- bstrutime(dt, sizeof(dt), jcr->sched_time));
+ bstrutime(dt, sizeof(dt), jcr->sched_time),
+ jcr->JobPriority);
add_prompt(ua, _("FileSet")); /* 3 */
add_prompt(ua, _("Client")); /* 4 */
add_prompt(ua, _("When")); /* 5 */
add_prompt(ua, _("FileSet")); /* 3 */
add_prompt(ua, _("Client")); /* 4 */
add_prompt(ua, _("When")); /* 5 */
+ add_prompt(ua, _("Priority")); /* 6 */
if (jcr->JobType == JT_BACKUP ||
jcr->JobType == JT_VERIFY) {
if (jcr->JobType == JT_BACKUP ||
jcr->JobType == JT_VERIFY) {
- add_prompt(ua, _("Pool")); /* 6 */
+ add_prompt(ua, _("Pool")); /* 7 */
} else if (jcr->JobType == JT_RESTORE) {
} else if (jcr->JobType == JT_RESTORE) {
- add_prompt(ua, _("Bootstrap")); /* 6 */
- add_prompt(ua, _("Where")); /* 7 */
- add_prompt(ua, _("Replace")); /* 8 */
- add_prompt(ua, _("JobId")); /* 9 */
+ add_prompt(ua, _("Bootstrap")); /* 7 */
+ add_prompt(ua, _("Where")); /* 8 */
+ add_prompt(ua, _("Replace")); /* 9 */
+ add_prompt(ua, _("JobId")); /* 10 */
}
switch (do_prompt(ua, "", _("Select parameter to modify"), NULL, 0)) {
case 0:
}
switch (do_prompt(ua, "", _("Select parameter to modify"), NULL, 0)) {
case 0:
break;
case 5:
/* When */
break;
case 5:
/* When */
- if (!get_cmd(ua, _("Please enter scheduled start time (return for now): "))) {
+ if (!get_cmd(ua, _("Please enter desired start time as YYYY-MM-DD HH:MM:SS (return for now): "))) {
break;
}
if (ua->cmd[0] == 0) {
break;
}
if (ua->cmd[0] == 0) {
}
goto try_again;
case 6:
}
goto try_again;
case 6:
+ /* Priority */
+ if (!get_pint(ua, _("Enter new Priority: "))) {
+ break;
+ }
+ if (ua->pint32_val == 0) {
+ bsendmsg(ua, _("Priority must be a positive integer.\n"));
+ } else {
+ jcr->JobPriority = ua->pint32_val;
+ }
+ goto try_again;
+ case 7:
if (jcr->JobType == JT_BACKUP ||
jcr->JobType == JT_VERIFY) { /* Pool */
pool = select_pool_resource(ua);
if (jcr->JobType == JT_BACKUP ||
jcr->JobType == JT_VERIFY) { /* Pool */
pool = select_pool_resource(ua);
/* Where */
if (!get_cmd(ua, _("Please enter path prefix for restore (/ for none): "))) {
break;
/* Where */
if (!get_cmd(ua, _("Please enter path prefix for restore (/ for none): "))) {
break;
}
jcr->where = bstrdup(ua->cmd);
goto try_again;
}
jcr->where = bstrdup(ua->cmd);
goto try_again;
/* Replace */
start_prompt(ua, _("Replace:\n"));
for (i=0; ReplaceOptions[i].name; i++) {
/* Replace */
start_prompt(ua, _("Replace:\n"));
for (i=0; ReplaceOptions[i].name; i++) {
jcr->replace = ReplaceOptions[opt].token;
}
goto try_again;
jcr->replace = ReplaceOptions[opt].token;
}
goto try_again;
/* JobId */
jid = NULL; /* force reprompt */
jcr->RestoreJobId = 0;
/* JobId */
jid = NULL; /* force reprompt */
jcr->RestoreJobId = 0;
/* */
#define VERSION "1.31"
#define VSTRING "1"
/* */
#define VERSION "1.31"
#define VSTRING "1"
-#define BDATE "20 Jul 2003"
-#define LSMDATE "20Jul03"
+#define BDATE "21 Jul 2003"
+#define LSMDATE "21Jul03"
/* Debug flags */
#define DEBUG 1
/* Debug flags */
#define DEBUG 1