- }
- }
- if (is_partial_record(rec)) {
- Dmsg6(100, "Partial, break. recno=%d state=%s blk=%d SI=%d ST=%d FI=%d\n", record,
- rec_state_to_str(rec), block->BlockNumber,
- rec->VolSessionId, rec->VolSessionTime, rec->FileIndex);
- break; /* read second part of record */
- }
- ok = record_cb(dcr, rec);
- if (rec->Stream == STREAM_MD5_SIGNATURE || rec->Stream == STREAM_SHA1_SIGNATURE) {
- Dmsg3(100, "Done FI=%d before set_eof pos %d:%d\n", rec->FileIndex,
- dev->file, dev->block_num);
- if (match_set_eof(jcr->bsr, rec) && try_repositioning(jcr, rec, dev)) {
- Dmsg2(100, "Break after match_set_eof pos %d:%d\n",
- dev->file, dev->block_num);
- break;
- }
- Dmsg2(100, "After set_eof pos %d:%d\n", dev->file, dev->block_num);
- }
+ }
+ }
+ dcr->VolLastIndex = rec->FileIndex; /* let caller know where we are */
+ if (is_partial_record(rec)) {
+ Dmsg6(dbglvl, "Partial, break. recno=%d state=%s blk=%d SI=%d ST=%d FI=%d\n", record,
+ rec_state_to_str(rec), block->BlockNumber,
+ rec->VolSessionId, rec->VolSessionTime, rec->FileIndex);
+ break; /* read second part of record */
+ }
+ Dmsg6(dbglvl, "OK callback. recno=%d state=%s blk=%d SI=%d ST=%d FI=%d\n", record,
+ rec_state_to_str(rec), block->BlockNumber,
+ rec->VolSessionId, rec->VolSessionTime, rec->FileIndex);
+ ok = record_cb(dcr, rec);
+ /*
+ * If we have a digest stream, we check to see if we have
+ * finished the current bsr, and if so, repositioning will
+ * be turned on.
+ */
+ if (crypto_digest_stream_type(rec->Stream) != CRYPTO_DIGEST_NONE) {
+ Dmsg3(dbglvl, "Have digest FI=%u before bsr check pos %u:%u\n", rec->FileIndex,
+ dev->file, dev->block_num);
+ if (is_this_bsr_done(jcr->bsr, rec) && try_repositioning(jcr, rec, dcr)) {
+ Dmsg2(dbglvl, "This bsr done, break pos %u:%u\n",
+ dev->file, dev->block_num);
+ break;
+ }
+ Dmsg2(900, "After is_bsr_done pos %u:%u\n", dev->file, dev->block_num);
+ }