From: Kern Sibbald Date: Tue, 19 Sep 2006 16:50:48 +0000 (+0000) Subject: Back out changes apparently crashing system X-Git-Tag: Release-2.0.0~434 X-Git-Url: https://git.sur5r.net/?a=commitdiff_plain;h=f837f549c90e733088fc86ca71279fd7c07c3f1c;p=bacula%2Fbacula Back out changes apparently crashing system git-svn-id: https://bacula.svn.sourceforge.net/svnroot/bacula/trunk@3483 91ce42f0-d328-0410-95d8-f526ca767f89 --- diff --git a/bacula/src/dird/catreq.c b/bacula/src/dird/catreq.c index e4dcdd4e5d..3dd8a58212 100644 --- a/bacula/src/dird/catreq.c +++ b/bacula/src/dird/catreq.c @@ -44,7 +44,7 @@ static char Update_media[] = "CatReq Job=%127s UpdateMedia VolName=%s" " 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 " @@ -96,7 +96,6 @@ void catalog_request(JCR *jcr, BSOCK *bs) POOLMEM *omsg; POOL_DBR pr; uint32_t Stripe; - utime_t VolFirstWritten; memset(&mr, 0, sizeof(mr)); memset(&sdmr, 0, sizeof(sdmr)); @@ -198,8 +197,7 @@ void catalog_request(JCR *jcr, BSOCK *bs) &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, @@ -216,11 +214,7 @@ void catalog_request(JCR *jcr, BSOCK *bs) } /* 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 */ diff --git a/bacula/src/stored/askdir.c b/bacula/src/stored/askdir.c index 4b4fb0f126..0a549aafae 100644 --- a/bacula/src/stored/askdir.c +++ b/bacula/src/stored/askdir.c @@ -31,7 +31,7 @@ static char Update_media[] = "CatReq Job=%s UpdateMedia VolName=%s" " 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"; @@ -282,7 +282,7 @@ bool dir_update_volume_info(DCR *dcr, bool label) 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; @@ -320,7 +320,6 @@ bool dir_update_volume_info(DCR *dcr, bool label) 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); diff --git a/bacula/src/stored/block.c b/bacula/src/stored/block.c index 89fc951e25..737ab5c4fe 100644 --- a/bacula/src/stored/block.c +++ b/bacula/src/stored/block.c @@ -514,12 +514,14 @@ bool write_block_to_dev(DCR *dcr) */ 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); @@ -958,9 +960,10 @@ reread: 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); @@ -970,7 +973,6 @@ reread: } 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;