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)


Reply via email to