*
*/
/*
- Copyright (C) 2003-2005 Kern Sibbald
+ Copyright (C) 2003-2006 Kern Sibbald
This program is free software; you can redistribute it and/or
modify it under the terms of the GNU General Public License
static void send_blocked_status(JCR *jcr, DEVICE *dev);
static void list_terminated_jobs(void *arg);
static void list_running_jobs(BSOCK *user);
+static void list_jobs_waiting_on_reservation(BSOCK *user);
static void sendit(const char *msg, int len, void *arg);
static const char *level_to_str(int level);
*/
list_running_jobs(user);
+ /*
+ * List jobs stuck in reservation system
+ */
+ list_jobs_waiting_on_reservation(user);
+
/*
* List terminated jobs
*/
dev = device->dev;
if (dev && dev->is_open()) {
if (dev->is_labeled()) {
- bnet_fsend(user, _("Device %s is mounted with Volume \"%s\"\n"),
- dev->print_name(), dev->VolHdr.VolumeName);
+ bnet_fsend(user, _("Device %s is mounted with Volume=\"%s\" Pool=\"%s\"\n"),
+ dev->print_name(), dev->VolHdr.VolumeName,
+ dev->pool_name[0]?dev->pool_name:"*unknown*");
} else {
bnet_fsend(user, _("Device %s open but no Bacula volume is mounted.\n"),
dev->print_name());
} else {
if (dev) {
- bnet_fsend(user, _("Device %s is not open or does not exist.\n"), dev->print_name());
+ bnet_fsend(user, _("Device %s is not open.\n"), dev->print_name());
} else {
bnet_fsend(user, _("Device \"%s\" is not open or does not exist.\n"), device->hdr.name);
}
list_volumes(user);
bnet_fsend(user, _("====\n\n"));
-
#ifdef xxx
- if (debug_level > 0) {
+ if (debug_level > 10) {
bnet_fsend(user, _("====\n\n"));
dump_resource(R_DEVICE, resources[R_DEVICE-r_first].res_head, sendit, user);
+ bnet_fsend(user, _("====\n\n"));
}
- bnet_fsend(user, _("====\n\n"));
#endif
list_spool_stats(user);
}
#endif
}
- free_jcr(jcr);
}
+ endeach_jcr(jcr);
+
if (!found) {
bnet_fsend(user, _("No Jobs running.\n"));
}
bnet_fsend(user, _("====\n"));
}
+static void list_jobs_waiting_on_reservation(BSOCK *user)
+{
+ JCR *jcr;
+
+ bnet_fsend(user, _("\nJobs waiting to reserve a drive:\n"));
+ foreach_jcr(jcr) {
+ if (!jcr->reserve_msgs) {
+ continue;
+ }
+ send_drive_reserve_messages(jcr, user);
+ }
+ endeach_jcr(jcr);
+
+ bnet_fsend(user, _("====\n"));
+}
+
+
static void list_terminated_jobs(void *arg)
{
char dt[MAX_TIME_LENGTH], b1[30], b2[30];
if (njcr->JobId != 0) {
bnet_fsend(dir, DotStatusJob, njcr->JobId, njcr->JobStatus, njcr->JobErrors);
}
- free_jcr(njcr);
}
+ endeach_jcr(njcr);
} else if (strcmp(time.c_str(), "last") == 0) {
bnet_fsend(dir, OKqstatus, time.c_str());
if ((last_jobs) && (last_jobs->size() > 0)) {