While trying out async i/o with 3.4.1 I found out that samba works synchronous after exactly 100 aio requests.
The variable outstanding_aio_calls is never decremented.
Since every completion should be signalled through the signal handler I propose to move the backwards counting there. I moved the increment a little bit closer to the real call, in favour not to be signalled before actually being actually incremented.
IMHO the variable should be moved out of global.h
Created attachment 4766 [details]
Oh this is rather embarrassing :-). It might explain why I never saw the gains in performance from the aio code I expected. I'll evaluate this asap and get a fix into current code as soon as I'm done.
Created attachment 4769 [details]
git-am formatted patch that went into master.
Volker please review and assign to Karolin for inclusion into 3.4.x if you concur.
Jeremy, there is a merge conflict when applying the patch to v3-4-test.
Could you provide an updated version, please?
maybe use the original patch I supplied. This was relative to v3-4-test
No the original patch misses the read path change to make both read and write paths symmetrical. I'll provide an updated patch later today.
Created attachment 4783 [details]
git format patch relative to 3.4.1 test rewritten to match the JA patch
The last patch by Olaf (https://bugzilla.samba.org/attachment.cgi?id=4783) looks good. Karolin, please pull for 3.4.3.
Pushed to v3-4-test, will be inlcuded in the next 3.4 bug fix release.
Closing out bug report.