I have done some work for async processing in nfs4_Compound.c and
nfs_worker_thread.c, but what we need to actually be able to return from the
request processing call stack without completing the request is to have
async support at the RPC layer.
I'm investigating that code, but it's quite a maze of twisty passages all
alike. Following the code through all the function vectors is quite a
journey.
I'm not sure if there is stuff we can bypass so we don't need to do work
inside libntirpc.
Anyone who is more familiar with that code structure that has ideas, please
share.
Fundamentally, in order to not leave a worker thread blocked on FSAL I/O, we
need to be able to return all the way up the stack without actually retiring
the request.
Frank