*
* Volume information returned in jcr
*/
-int dir_get_volume_info(JCR *jcr, int writing)
+int dir_get_volume_info(JCR *jcr, enum get_vol_info_rw writing)
{
BSOCK *dir = jcr->dir_bsock;
- strcpy(jcr->VolCatInfo.VolCatName, jcr->VolumeName);
+ bstrncpy(jcr->VolCatInfo.VolCatName, jcr->VolumeName, sizeof(jcr->VolCatInfo.VolCatName));
Dmsg1(200, "dir_get_volume_info=%s\n", jcr->VolCatInfo.VolCatName);
bash_spaces(jcr->VolCatInfo.VolCatName);
- bnet_fsend(dir, Get_Vol_Info, jcr->Job, jcr->VolCatInfo.VolCatName, writing);
+ bnet_fsend(dir, Get_Vol_Info, jcr->Job, jcr->VolCatInfo.VolCatName,
+ writing==GET_VOL_INFO_FOR_WRITE?1:0);
return do_request_volume_info(jcr);
}
{
BSOCK *dir = jcr->dir_bsock;
+ if (!jcr->WroteVol) {
+ return 1; /* nothing written to tape */
+ }
+
+ jcr->WroteVol = false;
bnet_fsend(dir, Create_job_media, jcr->Job,
- jcr->VolFirstFile, jcr->JobFiles,
+ jcr->VolFirstIndex, jcr->VolLastIndex,
jcr->StartFile, jcr->EndFile,
jcr->StartBlock, jcr->EndBlock);
Dmsg1(100, "create_jobmedia(): %s", dir->msg);
if (job_canceled(jcr)) {
Mmsg(&dev->errmsg, _("Job %s canceled while waiting for mount on Storage Device \"%s\".\n"),
jcr->Job, jcr->dev_name);
- Jmsg(jcr, M_FATAL, 0, "%s", dev->errmsg);
+ Jmsg(jcr, M_INFO, 0, "%s", dev->errmsg);
return 0;
}
if (dir_find_next_appendable_volume(jcr)) { /* get suggested volume */
Mmsg(&dev->errmsg, _("Gave up waiting to mount Storage Device \"%s\" for Job %s\n"),
jcr->dev_name, jcr->Job);
Jmsg(jcr, M_FATAL, 0, "%s", dev->errmsg);
- Dmsg1(190, "Gave up waiting on device %s\n", dev->dev_name);
+ Dmsg1(190, "Gave up waiting on device %s\n", dev_name(dev));
return 0; /* exceeded maximum waits */
}
continue;
Jmsg(jcr, M_WARNING, 0, _("pthread error in mount_next_volume stat=%d ERR=%s\n"), stat,
strerror(stat));
}
- Dmsg1(190, "Someone woke me for device %s\n", dev->dev_name);
+ Dmsg1(190, "Someone woke me for device %s\n", dev_name(dev));
/* Restart wait counters */
wait_sec = min_wait;
num_wait = 0;
/* If no VolumeName, and cannot get one, try again */
if (jcr->VolumeName[0] == 0 &&
- !dir_find_next_appendable_volume(jcr)) {
+ !dir_find_next_appendable_volume(jcr) && !job_canceled(jcr)) {
Jmsg(jcr, M_MOUNT, 0, _(
"Someone woke me up, but I cannot find any appendable\n\
volumes for Job=%s.\n"), jcr->Job);
Mmsg(&dev->errmsg, _("Gave up waiting to mount Storage Device \"%s\" for Job %s\n"),
jcr->dev_name, jcr->Job);
Jmsg(jcr, M_FATAL, 0, "%s", dev->errmsg);
- Dmsg1(190, "Gave up waiting on device %s\n", dev->dev_name);
+ Dmsg1(190, "Gave up waiting on device %s\n", dev_name(dev));
return 0; /* exceeded maximum waits */
}
continue;
Jmsg(jcr, M_ERROR, 0, _("pthread error in mount_next_volume stat=%d ERR=%s\n"), stat,
strerror(stat));
}
- Dmsg1(190, "Someone woke me for device %s\n", dev->dev_name);
+ Dmsg1(190, "Someone woke me for device %s\n", dev_name(dev));
/* Restart wait counters */
wait_sec = min_wait;
for ( ; !job_canceled(jcr); ) {
time_t now;
- Dmsg3(100, "I'm going to sleep on device %s. HB=%d wait=%d\n", dev->dev_name,
+ Dmsg3(100, "I'm going to sleep on device %s. HB=%d wait=%d\n", dev_name(dev),
(int)me->heartbeat_interval, wait_sec);
stat = pthread_cond_timedwait(&dev->wait_next_vol, &dev->mutex, &timeout);
Dmsg1(100, "Wokeup from sleep on device stat=%d\n", stat);