I have been examining both the aufs and ufs versions of squid with truss and have seen that the async i/o version has thousands more calls to lseek than the non async version. On looking at the source of squidaio_do_read() it does indeed do a lseek() followed by a read() where the non async read doesn't seem to. This leads to 2 questions:
1. According to the man page entry, threaded implementations should not use lseek() followed by read() as atomicity between the calls cannot be guaranteed. It recommends using pread() instead. Is this correct? 2. Why is the lseek() necessary in the async read method but not the blocking read method? The output of truss shows it marching through the cache file and the lseek() appears to be a nop in the cases which have been captured thus far. Best regards, -mikep
begin:vcard n:Puckett;Michael tel;work:(510) 315-4777 x31162 x-mozilla-html:TRUE org:Sun Microsystems Inc;Software Integration Engineering version:2.1 email;internet:[EMAIL PROTECTED] adr;quoted-printable:;;M/S NWK11-106<br>=0D=0ASun Microsystems Inc<br>=0D=0A901 San Antonio Road;Palo Alto;CA;94303-4900;USA x-mozilla-cpt:;23168 fn:<b>Michael Puckett</b> end:vcard
