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?
--
Ronan Mullally 'In the Beginning there was
Network Manager nothing, which exploded.'
Ireland On-Line -- Terry Pratchett.