We've just installed a 540 to provide back-end storage for our news system. Since going live the INN error log has been full of the following messages:
crosspost cant link alt/jobs/16941 misc/jobs/offered/24616 : File exists crosspost cant link talk/politics/misc/2349 alt/feminism/944 : File exists
It appears that the crosspost daemon is generating this error while trying to create the necessary hard links for *every* crossposted article (I have yet to verify this) it encounters. The link *is* successfully made, and the article appears in the directory but the error log contains tens of thousands of error messages per day. Before switching to the filer we encountered no such problems.
The INN feeder system is a Pentium running Linux 2.0.33. The filer is a 540 running 4.3R4. I encountered the same problem on a 210, also running 4.3R4.
I've tracked the error down to the following code fragment (backends/crosspost.c line 172):
/* 2nd try to link */ lnval = link(names[0], names[i]) ; if (lnval < 0 && errno == EXDEV) {
#if defined(DONT_HAVE_SYMLINK)
... symlink stuff removed ...
#endif /* defined(DONT_HAVE_SYMLINK) */ } else if (lnval < 0) { (void)fprintf(stderr, "crosspost cant link %s % names[0], names[i]); perror(" "); }
So it appears that link() is returning an EEXISTS error. The link() man page includes the following:
BUGS On NFS file systems, the return code may be wrong in case the NFS server performs the link creation and dies before it can say so. Use stat(2) to find out if the link got created.
Has anybody come across this before? What is to blame - INN, Linux or the filer?