xfs
[Top] [All Lists]

Re: New Bug...

To: Jim Mostek <mostek@xxxxxxx>
Subject: Re: New Bug...
From: Glen Overby <overby@xxxxxxx>
Date: Mon, 1 May 2000 16:20:08 -0500 (CDT)
Cc: cattelan@xxxxxxxxxxx (Russell Cattelan), dpd@xxxxxxxxxxx (Doug Doucette), dxm@xxxxxxxxxxxxxxxxxxxxxxxx (Daniel Moore), linux-xfs@xxxxxxxxxxx
In-reply-to: message from Jim Mostek sent 1 May 2000
References: <390A174C.75D1393E@xxxxxxxxxxx> <200005011307.IAA69586@xxxxxxxxxxxxxxxxxxxxxxxx>
Sender: owner-linux-xfs@xxxxxxxxxxx
Jim Mostek wrote:
> 
> Glen Overby knows the dir2 format the best after
> Doug Doucette.
> 
> Glen, Doug, any suggestions on what to look for
> when hitting the last assert below:
> 
>         /*
>          * Loop over the data/unused entries.
>          */
>         while (p < endp) {
>                 dup = (xfs_dir2_data_unused_t *)p;
>                 /*
>                  * If it's unused, look for the space in the bestfree table.
>                  * If we find it, account for that, else make sure it
>                  * doesn't need to be there.
>                  */
>                 if (INT_GET(dup->freetag, ARCH_UNKNOWN) == 
> XFS_DIR2_DATA_FREE_TAG) {
>                         ASSERT(lastfree == 0);
>                         ASSERT(INT_GET(*XFS_DIR2_DATA_UNUSED_TAG_P_ARCH(dup, 
> ARCH_UNK
> NOWN), ARCH_UNKNOWN) ==
>                                (char *)dup - (char *)d);

Its a block format directory.  Its a small directory that has a
single-level b+tree and the directory entries in one directory block.

The XFS_DIR2_DATA_UNUSED_TAG_P_ARCH and INT_GET aren't in Irix; I
assume this is mac's big-endian / little-endian code.

So the ASSERT is comparing the tag values of an unused directory entry
and its offset into the data block.  It's checking if the unused
directory entry's 'tag' field is correct.  Bug could be a bad tag
value or a bad assert.

To know I'd need to know what those two macros do.  Tell me where your
ism is; the last time I looked for it, I couldn't find it.

If you've got a dump, get the values of: dup, d and *dup (it's an
xfs_dir2_data_unused_t).  While you're at it, dump *d
(xfs_dir2_data_hdr_t) so we can see the bestfree entries.  After that
we'll look at the remove-name code that sets the tag value.

Glen

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