xfs
[Top] [All Lists]

Re: Again: xfsrestore assertion failure

To: ivanr@xxxxxxx
Subject: Re: Again: xfsrestore assertion failure
From: Hasch@xxxxxxxxxxx (Juergen Hasch)
Date: Fri, 30 Nov 2001 20:12:18 +0100
Cc: linux-xfs@xxxxxxxxxxx
In-reply-to: <Pine.SGI.4.40.0111201041340.221674-100000@xxxxxxxxxxxxxxxxxxxxxx>
References: <Pine.SGI.4.40.0111201041340.221674-100000@xxxxxxxxxxxxxxxxxxxxxx>
Sender: owner-linux-xfs@xxxxxxxxxxx
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




<Prev in Thread] Current Thread [Next in Thread>