     return return_bsr;
  }
  
+@@ -360,9 +371,9 @@
+ static int match_all(BSR *bsr, DEV_RECORD *rec, VOLUME_LABEL *volrec,
+                      SESSION_LABEL *sessrec, bool done, JCR *jcr)
+ {
+-   Dmsg0(050, "Enter match_all\n");
++   Dmsg1(050, "Enter match_all bsr=0x%p\n", bsr);
+    if (bsr->done) {
+-//    Dmsg0(dbglevel, "bsr->done set\n");
++      Dmsg1(dbglevel, "bsr->done set bsr=0x%p\n", bsr);
+       goto no_match;
+    }
+    if (!match_volume(bsr, bsr->volume, volrec, 1)) {
 @@ -386,8 +397,6 @@
           rec->Block, bsr->volblock->sblock, bsr->volblock->eblock);
        goto no_match;

+   Dmsg3(dbglevel, "match_volblock: sblock=%u eblock=%u recblock=%u\n",
+         volblock->sblock, volblock->eblock, rec->Block);
+
+   uint32_t min = (volblock->sblock)?volblock->sblock-1:0;
    if (volblock->sblock <= rec->Block && volblock->eblock >= rec->Block) {
       return 1;
    }
@@ -641,6 +648,7 @@
       bsr->root->reposition = true;
       Dmsg2(dbglevel, "bsr done from volblock rec=%u voleblock=%u\n",
          rec->Block, volblock->eblock);
+      dump_bsr(bsr, false)
    }
    return 0;
 }
Index: src/stored/read_record.c
===================================================================
--- src/stored/read_record.c	(révision 8116)
+++ src/stored/read_record.c	(copie de travail)
@@ -346,7 +346,10 @@
        */
       if (dev->file > bsr->volfile->sfile ||             
          (dev->file == bsr->volfile->sfile && dev->block_num > bsr->volblock->sblock)) {
-         return false;
+         Jmsg(jcr, M_ERROR, 0, _("Reposition from (file:block) %u:%u to %u:%u\n"),
+            dev->file, dev->block_num, bsr->volfile->sfile,
+            bsr->volblock->sblock);
+         //return false;
       }
       if (verbose) {
          Jmsg(jcr, M_INFO, 0, _("Reposition from (file:block) %u:%u to %u:%u\n"),
Index: src/stored/bls.c
===================================================================
--- src/stored/bls.c	(révision 8116)

    }
    /*
     * Check for Start or End of Session Record
Index: src/stored/record.c
===================================================================
--- src/stored/record.c	(révision 8116)
+++ src/stored/record.c	(copie de travail)
@@ -452,8 +452,8 @@
       rec->Block = block->BlockNumber;
       rec->File = ((DEVICE *)block->dev)->file;
    } else {
-      rec->Block = ((DEVICE *)block->dev)->EndBlock;
-      rec->File = ((DEVICE *)block->dev)->EndFile;
+      rec->Block = ((DEVICE *)block->dev)->block_num;
+      rec->File = ((DEVICE *)block->dev)->file;
    }   
 
 
Index: src/stored/block.c
===================================================================
--- src/stored/block.c	(révision 8116)
+++ src/stored/block.c	(copie de travail)
@@ -1119,8 +1119,8 @@
       uint64_t addr = dev->file_addr + block->read_len - 1;
       dcr->EndBlock = (uint32_t)addr;
       dcr->EndFile = (uint32_t)(addr >> 32);
-      dev->block_num = dcr->EndBlock;
-      dev->file = dcr->EndFile;
+      dev->block_num = (uint32_t)(dev->file_addr);
+      dev->file = (uint32_t)(dev->file_addr  >> 32);
    }
    dcr->VolMediaId = dev->VolCatInfo.VolMediaId;
    dev->file_addr += block->read_len;
