/* Responses received from the Director */
-static char OK_media[] = "1000 OK VolName=%127s VolJobs=%u VolFiles=%u"
- " VolBlocks=%u VolBytes=%" lld " VolMounts=%u VolErrors=%u VolWrites=%u"
- " MaxVolBytes=%" lld " VolCapacityBytes=%" lld " VolStatus=%20s"
- " Slot=%d MaxVolJobs=%u MaxVolFiles=%u InChanger=%d"
- " VolReadTime=%" lld " VolWriteTime=%" lld " EndFile=%u EndBlock=%u"
- " VolParts=%u LabelType=%d";
+static char OK_media[] = "1000 OK VolName=%127s VolJobs=%u VolFiles=%lu"
+ " VolBlocks=%lu VolBytes=%lld VolMounts=%lu VolErrors=%lu VolWrites=%lu"
+ " MaxVolBytes=%lld VolCapacityBytes=%lld VolStatus=%20s"
+ " Slot=%ld MaxVolJobs=%lu MaxVolFiles=%lu InChanger=%ld"
+ " VolReadTime=%lld VolWriteTime=%lld EndFile=%lu EndBlock=%lu"
+ " VolParts=%lu LabelType=%ld";
static char OK_create[] = "1000 OK CreateJobMedia\n";
BSOCK *dir = jcr->dir_bsock;
VOLUME_CAT_INFO vol;
int n;
- int InChanger;
+ int32_t InChanger;
dcr->VolumeName[0] = 0; /* No volume */
if (bnet_recv(dir) <= 0) {
return false;
}
memset(&vol, 0, sizeof(vol));
- Dmsg1(100, "<dird %s", dir->msg);
+ Dmsg1(110, "<dird %s", dir->msg);
n = sscanf(dir->msg, OK_media, vol.VolCatName,
&vol.VolCatJobs, &vol.VolCatFiles,
&vol.VolCatBlocks, &vol.VolCatBytes,
&vol.EndFile, &vol.EndBlock, &vol.VolCatParts,
&vol.LabelType);
if (n != 21) {
- Dmsg2(100, "Bad response from Dir fields=%d: %s", n, dir->msg);
+ Dmsg2(110, "Bad response from Dir fields=%d: %s", n, dir->msg);
Mmsg(jcr->errmsg, _("Error getting Volume info: %s"), dir->msg);
return false;
}
return ok;
}
+
+
/*
* Get info on the next appendable volume in the Director's database
* Returns: true on success
* the most available could already be mounted on another
* drive, so we continue looking for a not in use Volume.
*/
+ lock_reservations();
for (int vol_index=1; vol_index < 20; vol_index++) {
bash_spaces(dcr->media_type);
bash_spaces(dcr->pool_name);
continue;
}
} else {
- Dmsg0(200, "No volume info, return false\n");
- return false;
+ Dmsg2(100, "No vol. index %d return false. dev=%s\n", vol_index,
+ dcr->dev->print_name());
+ found = false;
+ break;
}
}
if (found) {
Dmsg0(400, "dir_find_next_appendable_volume return true\n");
new_volume(dcr, dcr->VolumeName); /* reserve volume */
+ unlock_reservations();
return true;
}
dcr->VolumeName[0] = 0;
+ unlock_reservations();
return false;
}
/* Just labeled or relabeled the tape */
if (label) {
bstrncpy(vol->VolCatStatus, "Append", sizeof(vol->VolCatStatus));
- vol->VolCatBytes = 1; /* indicates tape labeled */
}
pm_strcpy(VolumeName, vol->VolCatName);
bash_spaces(VolumeName);
/* Do not lock device here because it may be locked from label */
if (!do_get_volume_info(dcr)) {
Jmsg(jcr, M_FATAL, 0, "%s", jcr->errmsg);
- Pmsg2(000, _("Didn't get vol info vol=%s: ERR=%s"),
+ Dmsg2(100, _("Didn't get vol info vol=%s: ERR=%s"),
vol->VolCatName, jcr->errmsg);
return false;
}
}
}
- jcr->JobStatus = JS_WaitMedia;
+ set_jcr_job_status(jcr, JS_WaitMedia);
dir_send_job_status(jcr);
stat = wait_for_sysop(dcr);
dcr->VolumeName, dev->print_name(), jcr->Job);
}
- jcr->JobStatus = JS_WaitMount;
+ set_jcr_job_status(jcr, JS_WaitMount);
dir_send_job_status(jcr);
stat = wait_for_sysop(dcr); /* wait on device */