" VolJobs=%u VolFiles=%u VolBlocks=%u VolBytes=%" lld " VolMounts=%u"
" VolErrors=%u VolWrites=%u MaxVolBytes=%" lld " EndTime=%d VolStatus=%10s"
" Slot=%d relabel=%d InChanger=%d VolReadTime=%" lld " VolWriteTime=%" lld
- " VolFirstWritten=%" lld " VolParts=%u\n";
+ " VolParts=%u\n";
static char Create_job_media[] = "CatReq Job=%127s CreateJobMedia "
" FirstIndex=%u LastIndex=%u StartFile=%u EndFile=%u "
POOLMEM *omsg;
POOL_DBR pr;
uint32_t Stripe;
- utime_t VolFirstWritten;
memset(&mr, 0, sizeof(mr));
memset(&sdmr, 0, sizeof(sdmr));
&sdmr.VolJobs, &sdmr.VolFiles, &sdmr.VolBlocks, &sdmr.VolBytes,
&sdmr.VolMounts, &sdmr.VolErrors, &sdmr.VolWrites, &sdmr.MaxVolBytes,
&sdmr.LastWritten, &sdmr.VolStatus, &sdmr.Slot, &label, &sdmr.InChanger,
- &sdmr.VolReadTime, &sdmr.VolWriteTime, &VolFirstWritten,
- &sdmr.VolParts) == 19) {
+ &sdmr.VolReadTime, &sdmr.VolWriteTime, &sdmr.VolParts) == 18) {
db_lock(jcr->db);
Dmsg3(400, "Update media %s oldStat=%s newStat=%s\n", sdmr.VolumeName,
}
/* Set first written time if this is first job */
if (mr.FirstWritten == 0) {
- if (VolFirstWritten == 0) {
- mr.FirstWritten = jcr->start_time; /* use Job start time as first write */
- } else {
- mr.FirstWritten = VolFirstWritten;
- }
+ mr.FirstWritten = jcr->start_time; /* use Job start time as first write */
mr.set_first_written = true;
}
/* If we just labeled the tape set time */
" VolJobs=%u VolFiles=%u VolBlocks=%u VolBytes=%s VolMounts=%u"
" VolErrors=%u VolWrites=%u MaxVolBytes=%s EndTime=%d VolStatus=%s"
" Slot=%d relabel=%d InChanger=%d VolReadTime=%s VolWriteTime=%s"
- " VolFirstWritten=%s VolParts=%u\n";
+ " VolParts=%u\n";
static char Create_job_media[] = "CatReq Job=%s CreateJobMedia"
" FirstIndex=%u LastIndex=%u StartFile=%u EndFile=%u"
" StartBlock=%u EndBlock=%u Copy=%d Strip=%d\n";
BSOCK *dir = jcr->dir_bsock;
DEVICE *dev = dcr->dev;
time_t LastWritten = time(NULL);
- char ed1[50], ed2[50], ed3[50], ed4[50], ed5[50];
+ char ed1[50], ed2[50], ed3[50], ed4[50];
VOLUME_CAT_INFO *vol = &dev->VolCatInfo;
int InChanger;
POOL_MEM VolumeName;
InChanger, /* bool in structure */
edit_uint64(vol->VolReadTime, ed3),
edit_uint64(vol->VolWriteTime, ed4),
- edit_uint64(vol->VolFirstWritten, ed5),
vol->VolCatParts);
Dmsg1(100, ">dird: %s", dir->msg);
*/
int retry = 0;
errno = 0;
+ stat = 0;
do {
if ((retry > 0 && stat == -1 && errno == EBUSY) || retry > 10) {
berrno be;
- Dmsg4(100, "===== retry=%d stat=%d errno=%d: ERR=%s\n",
+ Dmsg4(100, "===== read retry=%d stat=%d errno=%d: ERR=%s\n",
retry, stat, errno, be.strerror());
- bmicrosleep(0, 50000); /* pause a bit if busy or lots of errors */
+ bmicrosleep(0, 100000); /* pause a bit if busy or lots of errors */
+ dev->clrerror(-1);
}
if (dev->is_tape()) {
stat = tape_write(dev->fd, block->buf, (size_t)wlen);
do {
if ((retry > 0 && stat == -1 && errno == EBUSY) || retry > 10) {
berrno be;
- Dmsg4(100, "===== retry=%d stat=%d errno=%d: ERR=%s\n",
+ Dmsg4(100, "===== write retry=%d stat=%d errno=%d: ERR=%s\n",
retry, stat, errno, be.strerror());
- bmicrosleep(0, 50000); /* pause a bit if busy or lots of errors */
+ bmicrosleep(0, 100000); /* pause a bit if busy or lots of errors */
+ dev->clrerror(-1);
}
if (dev->is_tape()) {
stat = tape_read(dev->fd, block->buf, (size_t)block->buf_len);
} while (stat == -1 && (errno == EBUSY || errno == EINTR || errno == EIO) && retry++ < 30);
if (stat < 0) {
berrno be;
- dev->VolCatInfo.VolCatErrors++;
dev->clrerror(-1);
Dmsg1(200, "Read device got: ERR=%s\n", be.strerror());
block->read_len = 0;