NFSv4 client's BUG?
Ellard, Daniel
Daniel.Ellard at netapp.com
Tue Jul 1 09:08:51 EDT 2008
You're never closing filedes[i], and eventually you're running out of
file descriptors.
Add
close(filedes[i]);
After
write(filedes[i], "...
-Dan
-----Original Message-----
From: Wei Yongjun [mailto:yjwei at cn.fujitsu.com]
Sent: Tuesday, July 01, 2008 6:08 AM
To: nfsv4 at linux-nfs.org
Subject: NFSv4 client's BUG?
I have the following test program, but when it run, fopen may return
EIO, is this a bug of NFSv4 client?
NFSv4 client is 2.6.26-rc6.
-------------------------tstfopen.c-------------------------------------
#include <stdio.h>
#include <error.h>
#include <stdlib.h>
#include <string.h>
char * fname;
#define TEMPLATE "HighInodeXXXXXX"
int main(int argc, char *argv[]) {
FILE *fp;
char filename[4096];
int filedes[4096];
int i;
if (argc != 2) {
printf("Usage: %s filename\n", argv[0]);
exit(1);
}
fname = argv[1];
for (i = 0; i < 4096; i++) {
if (i % 100 == 0)
printf("i = %d\n", i);
strcpy(filename, TEMPLATE);
if ((filedes[i] = mkstemp(filename)) == -1) {
perror("mkstemp");
exit(0);
}
if ((fp = fopen(fname, "w+")) == NULL) {
perror("fopen");
exit(0);
}
if (fprintf(fp, "this is a test %d\n", i) == 0) {
perror("fprintf");
exit(0);
}
fclose(fp);
write(filedes[i], "abcdef!!!\n",23);
}
return 0;
}
---------------------------tstmain.sh------------------------------
umount /mnt
killall /root/tstfopen
ulimit -n 5000
mount -t nfs4 NFS4SERVER:/ /mnt
cd /mnt
/root/tstfopen debug_file &
CNT=1
while [ $CNT -lt 1000 ];
do
cat debug_file
TSTR=`cat debug_file`
if [ "$TSTR" = "$LTSTR" ]; then
break
fi
LTSTR=$TSTR
sleep 1
CNT=$((CNT+1))
done
rm -rf /mnt/*
cd -
umount /mnt
-----------------------------------end----------------------------
Usage:
#cd /root
#gcc tstfopen.c -o tstfopen
#sh tstmain.sh
The output may be like this:
i = 0
this is a test 0
this is a test 63
...
i = 1400
this is a test 1410
this is a test 1415
this is a test 1438
fopen: Input/output error
_______________________________________________
NFSv4 mailing list
NFSv4 at linux-nfs.org
http://linux-nfs.org/cgi-bin/mailman/listinfo/nfsv4
More information about the NFSv4
mailing list