Problems removing non-empty directory through NFS
freebsd at top-consulting.net
freebsd at top-consulting.net
Tue Oct 11 01:30:28 UTC 2011
I have a NFS server configured on FreeBSD 9.0 Beta2 that only serves a
share through NFS v3 TCP. All the processes ( mountd, rpcbind, lockd,
etc ) are started with -h <local ip> on both the server and the clients.
The NFS clients range from FreeBSD 6.1 to 8.2.
On all the clients, it is impossible for me to erase a directory that
contains other data and is from that NFS share. I get this error:
rm -rf nick/
rm: fts_read: Input/output error
same is true if I give the full path:
rm -rf /usr/nfs.mount/nick
rm: fts_read: Input/output error
if the directory is empty, I can use rm -rf or rmdir without problems.
Besides this I can read all the files, erase files, chmod, chown, etc
without any problem. I just can't erase directories.
Running a truss on the rm -rf shows ( towards the end ):
lseek(4,0x0,SEEK_SET) = 0 (0x0)
close(4) = 0 (0x0)
stat("new",{mode=drwx------ ,inode=53090640,size=512,blksize=4096}) = 0 (0x0)
open("new",O_NONBLOCK,027757765430) = 4 (0x4)
fstat(4,{mode=drwx------ ,inode=53090640,size=512,blksize=4096}) = 0 (0x0)
fcntl(4,F_SETFD,FD_CLOEXEC) = 0 (0x0)
fstatfs(0x4,0xbfbfe8c0) = 0 (0x0)
fstat(4,{mode=drwx------ ,inode=53090640,size=512,blksize=4096}) = 0 (0x0)
fchdir(0x4) = 0 (0x0)
getdirentries(0x4,0x8051000,0x1000,0x8050014) = 512 (0x200)
getdirentries(0x4,0x8051000,0x1000,0x8050014) = 0 (0x0)
lseek(4,0x0,SEEK_SET) = 0 (0x0)
close(4) = 0 (0x0)
open("..",O_RDONLY,00) = 4 (0x4)
fstat(4,{mode=drwx------ ,inode=53090635,size=512,blksize=4096}) = 0 (0x0)
fchdir(0x4) = 0 (0x0)
close(4) = 0 (0x0)
rmdir(0x80525a8) = 0 (0x0)
unlink("dovecot.index.log") = 0 (0x0)
unlink("dovecot.index.cache") = 0 (0x0)
unlink("dovecot-uidlist") = 0 (0x0)
unlink("dovecot.index.log.2") = 0 (0x0)
unlink("dovecot.index") = 0 (0x0)
open("..",O_RDONLY,00) ERR#5 'Input/output error'
rm: write(2,"rm: ",4) = 4 (0x4)
fts_readwrite(2,"fts_read",8) = 8 (0x8)
: write(2,": ",2) = 2 (0x2)
Input/output error
write(2,"Input/output error\n",19) = 19 (0x13)
exit(0x1)
process exit, rval = 256
There are no errors visible on the server.
Here is the output of nfsstat on the server:
Server Info:
Getattr Setattr Lookup Readlink Read Write Create
Remove
107929047 19257084 240622998 121 11209701 19004949 0
8754163
Rename Link Symlink Mkdir Rmdir Readdir RdirPlus
Access
4115334 1108983 38 1845 15557465 14771644 0
110311954
Mknod Fsstat Fsinfo PathConf Commit
0 4492462 47 0 14146384
Server Ret-Failed
0
Server Faults
0
Server Cache Stats:
Inprog Idem Non-idem Misses
0 0 0 579078451
Server Write Gathering:
WriteOps WriteRPC Opsaved
19004949 19004949 0
Anyone has any ideas what might be causing this ?
More information about the freebsd-questions
mailing list