According to Toens Bueker:
>
> when I try to torture my brand new qmail installation
> (qmail-1.03 + bigtodo + bigconcurrency on Solaris 7, queue
> on a separate 9 GB disk, mounted with 'noatime',
> conf-split 521 or 321) a little bit, I get this error
> message after about 1000 mails:
>
> 451 qq trouble creating files in queue (#4.3.0)
>
> Has anybody else seen this in a qmail+Solaris 7
> environment? What can I do to stop it?
>
> The queue is completely empty at the start of the test,
> the filesystem on the disk is just created.
Has anyone else observed this behavior with qmail+Solaris 7?
We've seen this error on qmail+Solaris 7 but _not_ on qmail+Solaris 8.
>From looking at where the failure happens (via truss(1)), it doesn't
make sense why the error would be induced by a noatime UFS. The error
is occuring in qmail-queue.c. The 'noatime' mount option does otherwise
cause some slight performance gain.
Also, the fact that we haven't seen this on qmail+Solaris 8 is perplexing.
TIA,
--curtis
qmail-queue.c:
void main()
{
unsigned int len;
char ch;
....
sig_pipeignore();
sig_miscignore();
sig_alarmcatch(sigalrm);
sig_bugcatch(sigbug);
alarm(DEATH);
pidopen();
if (fstat(messfd,&pidst) == -1) die(63);
messnum = pidst.st_ino;
messfn = fnnum("mess/",1);
todofn = fnnum("todo/",1);
intdfn = fnnum("intd/",1);
if (link(pidfn,messfn) == -1) die(64);
>>>>> if (unlink(pidfn) == -1) die(63);
flagmademess = 1;
------
truss done on Solaris 7:
...
6954/1: 0.9187 umask(033) = 077
6954/1: 0.9190 chdir("/var/qmail") = 0
6954/1: 0.9194 chdir("queue") = 0
6954/1: 0.9197 getpid() = 6954
[540]
6954/1: 0.9200 getuid() = 0 [7794]
6954/1: 0.9203 time() = 983482560
6954/1: 0.9207 sigaction(SIGPIPE, 0xFFBEF580, 0x00000000) = 0
6954/1: 0.9211 sigaction(SIGVTALRM, 0xFFBEF580, 0x00000000) = 0
6954/1: 0.9215 sigaction(SIGPROF, 0xFFBEF580, 0x00000000) = 0
6954/1: 0.9219 sigaction(SIGQUIT, 0xFFBEF580, 0x00000000) = 0
6954/1: 0.9222 sigaction(SIGINT, 0xFFBEF580, 0x00000000) = 0
6954/1: 0.9226 sigaction(SIGHUP, 0xFFBEF580, 0x00000000) = 0
6954/1: 0.9323 sigaction(SIGXCPU, 0xFFBEF580, 0x00000000) = 0
6954/1: 0.9328 sigaction(SIGXFSZ, 0xFFBEF580, 0x00000000) = 0
6954/1: 0.9343 sigaction(SIGALRM, 0xFFBEF580, 0x00000000) = 0
6954/1: 0.9346 sigaction(SIGILL, 0xFFBEF580, 0x00000000) = 0
6954/1: 0.9349 sigaction(SIGABRT, 0xFFBEF580, 0x00000000) = 0
6954/1: 0.9391 sigaction(SIGFPE, 0xFFBEF580, 0x00000000) = 0
6954/1: 0.9398 sigaction(SIGBUS, 0xFFBEF580, 0x00000000) = 0
6954/1: 0.9401 sigaction(SIGSEGV, 0xFFBEF580, 0x00000000) = 0
6954/1: 0.9412 sigaction(SIGSYS, 0xFFBEF580, 0x00000000) = 0
6954/1: 0.9414 sigaction(SIGEMT, 0xFFBEF580, 0x00000000) = 0
6954/1: 0.9417 alarm(63) = 0
6954/1: 0.9425 open("pid/6954.983482560.1", O_WRONLY|O_CREAT|O_EXCL,
0644) = 4
6954/1: 0.9433 fstat(4, 0x0002662C) = 0
6954/1: 0.9963 link("pid/6954.983482560.1", "mess/209/306680") = 0
6954/1: 0.9976 unlink("pid/6954.983482560.1") Err#2
ENOENT
6954/1: 1.0088 _exit(63)