On rmdir, the fileserver checks that the directory is empty in
DeleteTarget. Unfortunately it forgets to IH_RELEASE the directory
handle afterwards, which ends up clobbering up the inode hash tables
on fileserver doing lots of rmdirs (just for the anecdote we had hash
buckets of 90 entries and others of > 150000...).
Obvious patch attached, Bcc'ed to openafs-bugs.
--
=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
Rainer Toebbicke
European Laboratory for Particle Physics(CERN) - Geneva, Switzerland
Phone: +41 22 767 8985 Fax: +41 22 767 7155
--- openafs/src/viced/afsfileprocs.c.o4 2008-01-22 13:27:12.000000000 +0100
+++ openafs/src/viced/afsfileprocs.c 2008-02-18 17:47:38.000000000 +0100
@@ -1548,6 +1548,7 @@
if (IsEmpty(&childdir) != 0)
return (EEXIST);
DZap(&childdir);
+ FidZap(&childdir);
(*targetptr)->delete = 1;
} else if ((--(*targetptr)->disk.linkCount) == 0)
(*targetptr)->delete = 1;