Am Tuesday 20 November 2001 00:52 schrieb ivanr@xxxxxxx:
> On Mon, 19 Nov 2001, Juergen Hasch wrote:
> > Hi,
> >
> > some people reported the following problem back in august :
> > > xfsrestore: examining media file 1
> > > xfsrestore: seeking past media file directory dump
> > > xfsrestore: drive_scsitape.c:1461: do_next_mark: Assertion
> > > `rechdrp->first_mark_offset - rechdrp->file_offset <= ( off64_t )
> > > ( contextp->dc_recsz )' failed.
> > > Aborted (core dumped)
> >
> > Steve Roseman gave the following fix for it:
> >
> > 523c523
> > < IXLATE(rh1, rh2, first_mark_offset);
> > ---
> >
> > > /* IXLATE(rh1, rh2, first_mark_offset); */
> >
> > 532a533
> >
> > > BXLATE(first_mark_offset);
> >
> > Today I ran into the same problem and after applying this fix, all seems
> > to work well again. Any reason this fix hasn't been applied in the CVS
> > code ?
>
> This is not the correct fix. That field should be endian converted.
>
> I'm not sure what the correct fix would be at the moment. I'll be able to
> look into it further if someone could supply a core file.
sorry I couldn't reply any sooner. As this happended on a production server
I needed to find another machine to play with.
There is no core file, so I attached the output of xfsrestore after I added a
printf for file_offset and first_mark_offset (format %llx) in
xlate_rec_hdr().
./xfsrestore: examining media file 1
./xfsrestore: seeking past media file directory dump
xlate_rec_hdr: pre-xlate
file_offset 100000000000
first_mark_offset ffffffffffffffff
xlate_rec_hdr: post-xlate
file_offset 100000
first_mark_offset ffffffffffffffff
xlate_rec_hdr: pre-xlate
file_offset 200000000000
first_mark_offset ffffffffffffffff
xlate_rec_hdr: post-xlate
file_offset 200000
first_mark_offset ffffffffffffffff
xlate_rec_hdr: pre-xlate
file_offset 300000000000
first_mark_offset 3c3e88
xlate_rec_hdr: post-xlate
file_offset 300000
first_mark_offset 883e3c0000000000
xlate_rec_hdr: pre-xlate
file_offset 400000000000
first_mark_offset 466e20
xlate_rec_hdr: post-xlate
file_offset 400000
first_mark_offset 206e460000000000
xfsrestore: drive_scsitape.c:1508: do_next_mark: Assertion
`rechdrp->first_mark_offset - rechdrp->file_offset <= ( off64_t )(
contextp->dc_recsz )' failed.
In line 1508 of drive_scsitape.c I find the following values:
first_mark_offset = 206e460000000000
file_offset = 400000
tape_recsz = 809efa800100000
Does this help you ?
...Juergen
|