Debug trace from alpha nfsd

Steven N. Hirsch (shirsch@ibm.net)
Sat, 27 Dec 1997 21:02:51 -0500 (EST)


Bill,

I placed the following in linux/fs/nfsd/export.c:

--- export.c.orig Mon Dec 1 23:40:07 1997
+++ export.c Sat Dec 27 20:55:27 1997
@@ -163,7 +163,7 @@
!exp_verify_string(nxp->ex_client, NFSCLNT_IDMAX))
return -EINVAL;

- dprintk("exp_export called for %s:%s (%x/%ld fl %x).\n",
+ printk(KERN_WARNING "exp_export called for %s:%s (%x/%ld fl %x).\n",
nxp->ex_client, nxp->ex_path,
nxp->ex_dev, nxp->ex_ino, nxp->ex_flags);
dev = nxp->ex_dev;
@@ -207,6 +207,11 @@
err = -EINVAL;
if(inode->i_dev != nxp->ex_dev || inode->i_ino != nxp->ex_ino) {
/* I'm just being paranoid... */
+ printk(KERN_WARNING "Failed paranoid test\n"
+ "inode->i_dev = %ld, nxp->ex_dev = %ld\n"
+ "inode->i_ino = %ld, nxp->ex_ino = %ld\n",
+ inode->i_dev, nxp->ex_dev,
+ inode->i_ino, nxp->ex_ino);
goto finish;
}

Then tried to export the root directory. This fails with EINVAL, yielding
the following from the log:

Dec 27 20:47:18 alpha kernel: Installing knfsd (copyright (C) 1996 okir@monad.swb.de).
Dec 27 20:47:20 alpha kernel: nfsd_init: initialized fhcache, entries=341
Dec 27 20:47:20 alpha kernel: exp_export called for air.steve.net:/ (0/2069 fl 0).
Dec 27 20:47:20 alpha kernel: Failed paranoid test
Dec 27 20:47:20 alpha kernel: inode->i_dev = 2069, nxp->ex_dev = 0
Dec 27 20:47:20 alpha kernel: inode->i_ino = 2, nxp->ex_ino = 2069
Dec 27 20:55:34 alpha kernel: exp_unexport: found client air.steve.net
Dec 27 20:55:35 alpha kernel: nfsd: terminating on signal 15
Dec 27 20:55:35 alpha last message repeated 3 times
Dec 27 20:55:35 alpha kernel: nfsd_fh_free: 0 fixups freed
Dec 27 20:55:35 alpha kernel: nfsd_fh_free: 0 paths freed
Dec 27 20:55:35 alpha kernel: nfsd_fh_free: verified 0, put 0
Dec 27 20:55:35 alpha kernel: remove_proc_entry: parent nlink=2, file nlink=1

As you can see, something is getting scrambled with the dcache lookup. My
guess says that it's an endian problem (note the value for inode->i_dev is
the same as the nxp->ex_ino!).

Can you suggest a reasonable fix for this? I'd like to get the knfs
working on alpha.

Steve