I think we have a winner!
storeAufsClose checks to see if there are pending operations on the file 
and sets a flag, rather than initiates a close, if there are.  
storeAufsReadDone checks the flag just before returning, but 
storeAufsOpenDone does not.
I'm not sure what triggers an open without a read (an IMS request for a 
stale object, I suspect -- this squid gets an unusually high number of 
them), but it hasn't misplaced an FD in the 4 hours I've run this patch so 
far.  I guess I'll know for sure tomorrow.
        -- Brian
--- store_io_aufs.c     Sun Sep  2 22:32:30 2001
+++ store_io_aufs.c.new Sun Sep  2 18:15:46 2001
@@ -296,6 +296,8 @@
        storeAufsKickWriteQueue(sio);
     else if (sio->mode == O_RDONLY)
        storeAufsKickReadQueue(sio);
+    if (aiostate->flags.close_request)
+        storeAufsIOCallback(sio, errflag);
     debug(78, 3) ("storeAufsOpenDone: exiting\n");
 }
Received on Sun Sep 02 2001 - 20:46:27 MDT
This archive was generated by hypermail pre-2.1.9 : Tue Dec 09 2003 - 17:02:01 MST