X-Git-Url: https://git.sur5r.net/?a=blobdiff_plain;f=bacula%2Fsrc%2Fstored%2Facquire.c;h=34b28609862e99a480acad067d92bee711086fbf;hb=3d52afb93a3d89ac9d5aebf2052fc625a3274b75;hp=9528f786c562748af04b009f7421e88501bca29f;hpb=dc99fd43f4f8885e08afeb9029a8bbc3d2b21f1f;p=bacula%2Fbacula diff --git a/bacula/src/stored/acquire.c b/bacula/src/stored/acquire.c index 9528f786c5..34b2860986 100644 --- a/bacula/src/stored/acquire.c +++ b/bacula/src/stored/acquire.c @@ -47,6 +47,7 @@ bool acquire_device_for_read(DCR *dcr) bool try_autochanger = true; int i; int vol_label_status; + int retry = 0; Dmsg1(50, "jcr->dcr=%p\n", jcr->dcr); dev->block(BST_DOING_ACQUIRE); @@ -156,7 +157,11 @@ bool acquire_device_for_read(DCR *dcr) Jmsg1(jcr, M_WARNING, 0, "%s", jcr->errmsg); } - for (i=0; i<5; i++) { + for ( ;; ) { + /* If not polling limit retries */ + if (!dev->poll && retry++ > 10) { + break; + } dev->clear_labeled(); /* force reread of label */ if (job_canceled(jcr)) { Mmsg1(dev->errmsg, _("Job %d canceled.\n"), jcr->JobId); @@ -205,6 +210,12 @@ bool acquire_device_for_read(DCR *dcr) tape_initially_mounted = false; goto default_path; } + /* If polling and got a previous bad name, ignore it */ + if (dev->poll && strcmp(dev->BadVolName, dev->VolHdr.VolumeName) == 0) { + goto default_path; + } else { + bstrncpy(dev->BadVolName, dev->VolHdr.VolumeName, sizeof(dev->BadVolName)); + } /* Fall through */ default: Jmsg1(jcr, M_WARNING, 0, "%s", jcr->errmsg);