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