X-Git-Url: https://git.sur5r.net/?a=blobdiff_plain;f=bacula%2Fsrc%2Fstored%2Flabel.c;h=d5c981bbd674d1a926c270003b36442284c87a9a;hb=5c358307600ad7cd6983b8773f8d7dc1e7346c56;hp=ccf657c5ea1e5a4272b82118083b06a76f6f05d8;hpb=bd250bd7b853e110f1aab44d7e008df8a757a858;p=bacula%2Fbacula diff --git a/bacula/src/stored/label.c b/bacula/src/stored/label.c index ccf657c5ea..d5c981bbd6 100644 --- a/bacula/src/stored/label.c +++ b/bacula/src/stored/label.c @@ -77,7 +77,7 @@ int read_dev_volume_label(DCR *dcr) bool have_ansi_label = false; Dmsg4(100, "Enter read_volume_label res=%d device=%s vol=%s dev_Vol=%s\n", - dev->reserved_device, dev->print_name(), VolName, + dev->num_reserved(), dev->print_name(), VolName, dev->VolHdr.VolumeName[0]?dev->VolHdr.VolumeName:"*NULL*"); if (!dev->is_open()) { @@ -212,14 +212,15 @@ int read_dev_volume_label(DCR *dcr) } dev->set_labeled(); /* set has Bacula label */ - Dmsg0(100, "Call reserve_volume\n"); + Dmsg1(100, "Call reserve_volume=%s\n", dev->VolHdr.VolumeName); + Dmsg2(100, "=== dcr->dev=%p dev=%p\n", dcr->dev, dev); if (reserve_volume(dcr, dev->VolHdr.VolumeName) == NULL) { Mmsg2(jcr->errmsg, _("Could not reserve volume %s on %s\n"), dev->VolHdr.VolumeName, dev->print_name()); stat = VOL_NAME_ERROR; goto bail_out; } - dev = dcr->dev; /* may have changed in reserve volume */ + Dmsg2(100, "=== dcr->dev=%p dev=%p\n", dcr->dev, dev); /* Compare Volume Names */ Dmsg2(130, "Compare Vol names: VolName=%s hdr=%s\n", VolName?VolName:"*", dev->VolHdr.VolumeName); @@ -236,6 +237,7 @@ int read_dev_volume_label(DCR *dcr) } Dmsg0(150, "return VOL_NAME_ERROR\n"); stat = VOL_NAME_ERROR; + volume_unused(dcr); /* mark volume "released" */ goto bail_out; } Dmsg1(130, "Copy vol_name=%s\n", dev->VolHdr.VolumeName); @@ -251,6 +253,7 @@ int read_dev_volume_label(DCR *dcr) stat = read_ansi_ibm_label(dcr); /* If we want a label and didn't find it, return error */ if (stat != VOL_OK) { + volume_unused(dcr); /* mark volume "released" */ goto bail_out; } } @@ -259,7 +262,6 @@ int read_dev_volume_label(DCR *dcr) return VOL_OK; bail_out: - volume_unused(dcr); /* mark volume "released" */ empty_block(block); dev->rewind(dcr); Dmsg1(150, "return %d\n", stat); @@ -293,7 +295,8 @@ bool write_volume_label_to_block(DCR *dcr) dev->print_name()); return false; } else { - Dmsg1(130, "Wrote label of %d bytes to block\n", rec.data_len); + Dmsg2(130, "Wrote label of %d bytes to block. Vol=%s\n", rec.data_len, + dcr->VolumeName); } free_pool_memory(rec.data); return true; @@ -336,6 +339,8 @@ bool write_new_volume_label_to_dev(DCR *dcr, const char *VolName, if (dev->open(dcr, OPEN_READ_WRITE) < 0) { /* If device is not tape, attempt to create it */ if (dev->is_tape() || dev->open(dcr, CREATE_READ_WRITE) < 0) { + Jmsg3(dcr->jcr, M_WARNING, 0, _("Open device %s Volume \"%s\" failed: ERR=%s\n"), + dev->print_name(), dcr->VolumeName, dev->bstrerror()); goto bail_out; } } @@ -432,6 +437,8 @@ bool rewrite_volume_label(DCR *dcr, bool recycle) JCR *jcr = dcr->jcr; if (dev->open(dcr, OPEN_READ_WRITE) < 0) { + Jmsg3(jcr, M_WARNING, 0, _("Open device %s Volume \"%s\" failed: ERR=%s\n"), + dev->print_name(), dcr->VolumeName, dev->bstrerror()); return false; } Dmsg2(190, "set append found freshly labeled volume. fd=%d dev=%x\n", dev->fd(), dev); @@ -441,6 +448,7 @@ bool rewrite_volume_label(DCR *dcr, bool recycle) Dmsg0(200, "Error from write volume label.\n"); return false; } + Dmsg1(150, "wrote vol label to block. Vol=%s\n", dcr->VolumeName); dev->VolCatInfo.VolCatBytes = 0; /* reset byte count */ @@ -458,7 +466,8 @@ bool rewrite_volume_label(DCR *dcr, bool recycle) return false; } if (recycle) { - volume_unused(dcr); /* mark volume unused */ + Dmsg1(150, "Doing recycle. Vol=%s\n", dcr->VolumeName); +// volume_unused(dcr); /* mark volume unused */ if (!dev->truncate(dcr)) { Jmsg2(jcr, M_FATAL, 0, _("Truncate error on device %s: ERR=%s\n"), dev->print_name(), dev->print_errmsg()); @@ -511,8 +520,9 @@ bool rewrite_volume_label(DCR *dcr, bool recycle) dev->VolCatInfo.VolCatWrites = 1; dev->VolCatInfo.VolCatReads = 1; } - Dmsg0(150, "dir_update_vol_info. Set Append\n"); + Dmsg1(150, "dir_update_vol_info. Set Append vol=%s\n", dcr->VolumeName); bstrncpy(dev->VolCatInfo.VolCatStatus, "Append", sizeof(dev->VolCatInfo.VolCatStatus)); + bstrncpy(dev->VolCatInfo.VolCatName, dcr->VolumeName, sizeof(dev->VolCatInfo.VolCatName)); if (!dir_update_volume_info(dcr, true, true)) { /* indicate doing relabel */ return false; } @@ -527,7 +537,7 @@ bool rewrite_volume_label(DCR *dcr, bool recycle) * End writing real Volume label (from pre-labeled tape), or recycling * the volume. */ - Dmsg0(200, "OK from rewrite vol label.\n"); + Dmsg1(150, "OK from rewrite vol label. Vol=%s\n", dcr->VolumeName); return true; } @@ -583,6 +593,7 @@ static void create_volume_label_record(DCR *dcr, DEV_RECORD *rec) ser_string(dev->VolHdr.ProgDate); ser_end(rec->data, SER_LENGTH_Volume_Label); + bstrncpy(dcr->VolumeName, dev->VolHdr.VolumeName, sizeof(dcr->VolumeName)); rec->data_len = ser_length(rec->data); rec->FileIndex = dev->VolHdr.LabelType; rec->VolSessionId = jcr->VolSessionId;