+ /*
+ * If Adata block, we must seek to the correct address
+ */
+ if (block->adata) {
+ ASSERT(dcr->dev->adata);
+ uint64_t cur = dev->lseek(dcr, 0, SEEK_CUR);
+ /* If we are going to create a hole, record it */
+ if (block->BlockAddr != cur) {
+ dev->lseek(dcr, block->BlockAddr, SEEK_SET);
+ Dmsg4(100, "Adata seek BlockAddr from %lld to %lld = %lld bytes adata_addr=%lld\n",
+ cur, block->BlockAddr, block->BlockAddr - cur, dev->adata_addr);
+ /* Insanity check */
+ if (block->BlockAddr > cur) {
+ dev->updateVolCatHoleBytes(block->BlockAddr - cur);
+ } else if (block->BlockAddr < cur) {
+ Pmsg5(000, "Vol=%s cur=%lld BlockAddr=%lld adata=%d block=%p\n",
+ dev->getVolCatName(), cur, block->BlockAddr, block->adata, block);
+ Jmsg3(jcr, M_FATAL, 0, "Bad seek on adata Vol=%s BlockAddr=%lld DiskAddr=%lld. Multiple simultaneous Jobs?\n",
+ dev->getVolCatName(), block->BlockAddr, cur);
+ //Pmsg2(000, "HoleBytes would go negative cur=%lld blkaddr=%lld\n", cur, block->BlockAddr);
+ }
+ }
+ }
+