- status_dev(dev, &stat);
- if (stat & BMT_EOD) {
- Dmsg0(100, "======= Got EOD ========\n");
-
- block_device(dev, BST_DOING_ACQUIRE);
- /* Unlock, but leave BLOCKED */
- unlock_device(dev);
-
- /*
- * Walk through all attached jcrs creating a jobmedia_record()
- */
- Dmsg1(100, "Walk attached jcrs. Volume=%s\n", dev->VolCatInfo.VolCatName);
- for (JCR *mjcr=NULL; (mjcr=next_attached_jcr(dev, mjcr)); ) {
- if (mjcr->JobId == 0) {
- continue; /* ignore console */
- }
- Dmsg1(100, "create JobMedia for Job %s\n", mjcr->Job);
- if (dev->state & ST_TAPE) {
- mjcr->EndBlock = dev->EndBlock;
- mjcr->EndFile = dev->EndFile;
- Dmsg2(200, "Fixup EndFile=%u EndBlock=%u\n", mjcr->EndFile, mjcr->EndBlock);
- } else {
- mjcr->EndBlock = (uint32_t)dev->file_addr;
- mjcr->EndFile = (uint32_t)(dev->file_addr >> 32);
- }
- if (!dir_create_jobmedia_record(mjcr)) {
- Jmsg(mjcr, M_ERROR, 0, _("Could not create JobMedia record for Volume=%s Job=%s\n"),
- dev->VolCatInfo.VolCatName, mjcr->Job);
- P(dev->mutex);
- unblock_device(dev);
- return 0;
- }
- mjcr->VolFirstIndex = 0; /* prevent writing jobmedia second time */
- }