Re: NFS EINVAL on open(... | O_TRUNC) on 2.6.23.9

Previous message: [thread] [date] [author]
Next message: [thread] [date] [author]
From: Gianluca Alberici
Date: Saturday, January 19, 2008 - 4:29 am

Hello all,

Sorry for being down for so long but i have decided to test the latest 
2.6.24 kernel because of the huge number of NFS patches (especially at 
RPC UDP protocol level) introduced mainly by Netapp people (Trond 
Myklebust et al.), hoping that maybe the problem would have magically 
disappeared, but...

On kernel 2.6.24 rc7:

- Debian nfs-user-server (v2) is giving the very same problem i reported 
last times: EINVAL on open() syscall with O|TRUNC on existing file
- CFSD, same as debian nfs-user-server (v2)

To answer Chuck's questions:

i have already straced all the applications, which puts in evidence that 
the problem is into the open() syscall with O|TRUNC on existing files, 
always.
I prepared that very basic piece of c code to rise the problem, as you 
can see it just 'syscalls' open(), and that is enough.
NFS version is 2, no options (for CFSD [ -oport=3049,intr ] as i ever did)

When im done with this email i will work on finding where exactly the 
problem arises, for now i can say that 2.6.21.7 is working so well, and 
2.6.22.16 is not working exactly as 2.6.24rc7 does.

I am really interested in finding out whats wrong with NFSD/CFSD and if 
it was a problem of NFS compliance i would really be glad to find out 
what to do to patch those servers, but im really far to be able to do it 
alone.
But: dont you think that we should find out that the problem is surely 
into the userspace servers before saying that everything is alright with 
linux kernel ?

I propose to anybody interested to test cfsd or nfs-user-server 
2.2beta47-23 (from debian etch) on any kernel >= 2.6.23. You ca use 
something like the piece of code included in this email, or you can simply:

echo "Hello" > /mnt/nfsmount/test

which is gonna fail after the first time (the first it creates a new 
file and it works) with EINVAL.

Now as i already said the problem is an RPC call_decode which fails, 
this is evident from an RPC debug. I have noticed a different number of 
bytes in the response from knfsd to userspace (28 instead of 96).

Somebody can help ?

Gianluca

Chuck Lever wrote:



--
Previous message: [thread] [date] [author]
Next message: [thread] [date] [author]

Messages in current thread:
NFS EINVAL on open(... | O_TRUNC) on 2.6.23.9, Gianluca Alberici, (Sat Dec 22, 3:52 am)
Re: NFS EINVAL on open(... | O_TRUNC) on 2.6.23.9, Gianluca Alberici, (Sun Dec 23, 4:35 am)
Re: NFS EINVAL on open(... | O_TRUNC) on 2.6.23.9, Andrew Morton, (Tue Dec 25, 3:04 pm)
Re: NFS EINVAL on open(... | O_TRUNC) on 2.6.23.9, Gianluca Alberici, (Wed Dec 26, 4:14 am)
Re: NFS EINVAL on open(... | O_TRUNC) on 2.6.23.9, Chuck Lever, (Wed Dec 26, 7:24 am)
Re: NFS EINVAL on open(... | O_TRUNC) on 2.6.23.9, Gianluca Alberici, (Sat Jan 19, 4:29 am)
Re: NFS EINVAL on open(... | O_TRUNC) on 2.6.23.9, Gianluca Alberici, (Sat Jan 19, 5:35 am)