Here is the start of my .workarea:
workarea.sm_tree_alias : 2.3.99pre2-xfs
workarea.sm_machine : bonnie.engr.sgi.com
workarea.sm_location : /isms/slinx/2.3.99pre2-xfs
Thanks,
Jim
>
>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
>
|