Kernel 2.4.25 I/O Error with NFS + VFAT partition

From: Jan Knutar
Date: Sun Feb 29 2004 - 16:45:40 EST


I use NFS to share a vfat partition. I have a slight fear that vfat over
nfs maybe only 'accidentally' worked in 2.4.24 and earlier...

In short: VFAT over NFS works in 2.4.24, does not work in 2.4.25,
(l)stat64 syscalls fail. Tested with both 2.4.24 and 2.4.25 clients.

For example:
Works:
ls --color=no /mnt/d

Lots of Input/Output errors:
ls -lh /mnt/d

/mnt/d is mounted with mount host:/mnt/import/d /mnt/d -o hard,intr
on the client
and is exported as
/mnt/import/d 192.168.42.1(rw,async,no_root_squash)
on the server, which has /mnt/import/d mounted with:
/dev/hdd5 /mnt/import/d vfat
in /etc/fstab.

Local access on the server of the filesystem works ok.

With strace of ls I've seen a few syscalls which seem to fail, examples:

lstat64("/mnt/d/putty.exe", 0x805a114) = -1 EIO (Input/output error)
stat64("/mnt/d/temp", 0x8059654) = -1 EIO (Input/output error)

In dmesg on the client machine, I find the following:

nfs_stat_to_errno: bad nfs status return value: 45
nfs_stat_to_errno: bad nfs status return value: 45
<repeated many times>

Nothing in dmesg on the server machine.

Setting /proc/sys/sunrpc/nfs*debug to 1 doesn't seem to put anything
in dmesg on the server, but alot of this on the client:

NFS: lookup(//cd2)
nfs_stat_to_errno: bad nfs status return value: 45
NFS: dentry_delete(//cd2, 0)
NFS: lookup(//cd1)
nfs_stat_to_errno: bad nfs status return value: 45
NFS: dentry_delete(//cd1, 0)

Which doesn't look very helpful.

Setting rpc-debug to 1, and the dmesg has this:

nfs_stat_to_errno: bad nfs status return value: 45
RPC: 23011 release request d1f63074
RPC: 23012 reserved req d1f63074 xid 83f759d9
RPC: 23012 xprt_transmit(83f759d9)
RPC: 23012 xprt_cwnd_limited cong = 0 cwnd = 512
RPC: xprt_sendmsg(0) = 136
RPC: 23012 xmit complete
RPC: udp_data_ready...
RPC: udp_data_ready client d1f63000
RPC: 23012 received reply
RPC: cong 256, cwnd was 512, now 512
RPC: 23012 has input (28 bytes)
nfs_stat_to_errno: bad nfs status return value: 45

Using ethereal to sniff on the NFS traffic, this is what it thinks of
a "ls /mnt/d/temp" from the server:

192.168.42.1 192.168.42.2 NFS V2 LOOKUP Call, DH:0x042c008a/temp
192.168.42.2 192.168.42.1 NFS V2 LOOKUP Reply (Call in 5) Error:ERR_OPNOTSUP


Any hints on where to go from here?

-
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/