OK, here is a patch which might start to narrow down where the inode number
is getting lost. I seem to remember there being issues with printing 64
bit numbers on the ppc, so you may have to mess with this somewhat to get
it to function there.
Steve
===========================================================================
Index: linux/fs/xfs/xfs_dir2.c
===========================================================================
--- /usr/tmp/TmpDir.32182-0/linux/fs/xfs/xfs_dir2.c_1.22 Tue Aug 29
10:11:31
2000
+++ linux/fs/xfs/xfs_dir2.c Tue Aug 29 10:06:05 2000
@@ -274,6 +274,7 @@
int rval; /* return value */
int v; /* type-checking value */
+ printk("xfs_dir2_createname: inum = %Ld\n", inum);
ASSERT((dp->i_d.di_mode & IFMT) == IFDIR);
if (rval = xfs_dir_ino_validate(tp->t_mountp, inum)) {
#pragma mips_frequency_hint NEVER
===========================================================================
Index: linux/fs/xfs/xfs_ialloc.c
===========================================================================
--- /usr/tmp/TmpDir.32182-0/linux/fs/xfs/xfs_ialloc.c_1.139 Tue Aug 29
10:11:31 2000
+++ linux/fs/xfs/xfs_ialloc.c Tue Aug 29 10:05:44 2000
@@ -935,6 +935,9 @@
ASSERT((XFS_AGINO_TO_OFFSET(mp, INT_GET(rec.ir_startino, ARCH_CONVERT))
%
XFS_INODES_PER_CHUNK) == 0);
ino = XFS_AGINO_TO_INO(mp, agno, INT_GET(rec.ir_startino, ARCH_CONVERT)
+
offset);
+
+ printk("inum set to %Ld from ir_startino of %d\n", ino,
rec.ir_startino);
+
XFS_INOBT_CLR_FREE(&rec, offset, ARCH_CONVERT);
INT_MOD(rec.ir_freecount, ARCH_CONVERT, -1);
if (error = xfs_inobt_update(cur, INT_GET(rec.ir_startino,
ARCH_CONVERT),
INT_GET(rec.ir_freecount, ARCH_CONVERT),
===========================================================================
Index: linux/fs/xfs/xfs_inode.c
===========================================================================
--- /usr/tmp/TmpDir.32182-0/linux/fs/xfs/xfs_inode.c_1.301 Tue Aug 29
10:11:32
2000
+++ linux/fs/xfs/xfs_inode.c Tue Aug 29 10:06:23 2000
@@ -1097,6 +1097,7 @@
#endif
error = xfs_dialloc(tp, pip ? pip->i_ino : 0, mode, okalloc,
ialloc_context, call_again, &ino);
+ printk("xfs_dialloc returned inum %Ld\n", ino);
if (error != 0) {
return error;
}
|