Pierangelo Masarati wrote:
Howard Chu wrote:
Not documented... The accesslog overlay serializes all write operations by taking a lock. This means only one write operation is allowed to progress at any time.
The refint overlay creates multiple write operations from a single write operation. If the accesslog overlay has already locked the current operation, then yes, the refint overlay will deadlock at that point because its write operations still go through the entire overlay stack. I think the fix for this will be to change the refint overlay to bypass any overlays above it when performing its own writes.
Wouldn't this prevent writes by refint from being logged by accesslog?
Yes, and that's probably the cleanest behavior. The overlay stack is only supposed to be executed completely for operations that came from the frontend. Any overlay on the stack should go through any other overlays below it, but not through any that are above it.