It looks like we’ve run into an NFS client bug in RHEL4. We stumbled upon this while trying to checkout code from a subversion repository to an nfs directory. Our NFS servers are RHEL3, and we only see this bug with RHEL4 clients. Things work when mounting the directory using ‘noac’, but we can’t live with the performance hit. Here is a test program to demonstrate the bug. dsr_lnxcu9% pwd /home/dsr dsr_lnxcu9% cat svnbug.c #include <sys/types.h> #include <sys/stat.h> #include <errno.h> #include <stdio.h> #include <fcntl.h> #include <unistd.h> #ifndef TESTSIZE #define TESTSIZE 52 #endif int main(int argc, char** argv) { char s[TESTSIZE+1]; struct stat st1, st2; int r; ssize_t len; int fd = open("tmpfile.xyzzy", O_RDWR|O_CREAT|O_EXCL, 0666); if (fd < 0) { perror("open"); exit(errno); } memset(s, 'x', TESTSIZE); len = write(fd, s, TESTSIZE); if (len < 0) { perror("write"); exit(errno); } r = fstat(fd, &st1); if (0 != r) { perror("fstat"); exit(errno); } r = fstat(fd, &st2); if (0 != r) { perror("fstat"); exit(errno); } printf("len = %zd, st1 = %zd, st2 = %zd\n", len, st1.st_size, st2.st_size); close(fd); return 0; } dsr_lnxcu9% gcc svnbug.c dsr_lnxcu9% ~/a.out len = 52, st1 = 52, st2 = 52 dsr_lnxcu9% cd /cdat/tem/dsr dsr_lnxcu9% ~/a.out len = 52, st1 = 0, st2 = 52
Hi All, This looks similar to Bug 194088. Thanks, Devin
Devin, could you test out the kernels I have at: http://people.redhat.com/jlayton and see if they resolve this problem? If so, then 4.5 will likely contain the fix for this.
Hi Jeff, Yes, your test kernels do seem to fix this problem. Do you know when 4.5 might be released? Many thanks, Devin
"Real Soon Now"
Since it looks like the test kernel corrected this, I'm going to set this to "NEEDINFO". When 4.5 is released, please test that kernel and report back here.
4.5 is now released. I'm going to go ahead and close this case. Please reopen (or open a new case) if this problem is not addressed in kernel -55.EL or greater.