> I'm running into the same problem when issuing the mount command for an
> NFS volume (bad file descriptor). I've tried playing with options for
> tcp, udp, and block size without success. I know my server and kernel
> are configured properly because I can boot the system with the root file
> system on NFS. I can even successfully mount a Windows CIFS drive. The
> limited debug I've done leads me to think that the NFS mount problem is
> in a call to uclibc. If you have nfs mounts working, please post the
> version of uclibc you are using.
>> Craig Hughes wrote:
>> Try using NFS over TCP instead of UDP.
>> On Sep 2, 2007, at 11:56 PM, Petr Palacký wrote:
>>> Hi Craig,
>>> yes, I'm able to ping NFS server, I can connect via SSH to the NFS
>>> server and
>>> I'm able to mount SMB shares on the same server.
>>> I tried compile NFS support into kernel and next as a modul, but
>>> happens. If is NFS compiled as a modul, loaded modules are nfs and
>>> nfs_acl (I
>>> tried without nfs_acl too).
>>> Petr P.
>>> Dne pátek 31 srpen 2007 20:02 Craig Hughes napsal(a):
>>>> Can you ping the NFS server from the gumstix?
>>>> Is NFS compiled in to the kernel?
>>>> If not, is the NFS module loaded?
I believe I have found the problem and a potential solution. The problem is in
the RPC code of uClibc, specifically the routine xdr_enum(). When gcc is
configured to use "short enums", the size of an enum can be between 1 and 4
bytes. xdr_enum() doesn't handle the case of enum equal to 1. I tried to fix
the problem by addding code for the case of a 1 byte enum to the xdr_enum(), but
it didn't work. I then followed the advice in a thread in one of the avr forums
to disable short enums in the gcc compiler. After disabling short enums in fcc,
recompiling gcc, uClibc and all of the target code, I was able to successfully
mount using NFS. The specific change is in file
"toolchain_build_arm_nofpu/gcc-4.1.1/gcc/config/arm/arm.c". I changed "#define
TARGET_DEFAULT_SHORT_ENUMS arm_default_short_enums" to "#define