fix null pointer dereference for 8k xnbd fio write

With small data (send receive) there is a race condition between the processing of the
TX completion and the RX completion of the response.
The good scenario is when request TX completes is handled before the response RX complete,
thus the user provided scatter-list is unmapped before the response is passed back to the application
which in turn return the block request to the block layer and the scatter-list is recycled.
The bad scenario is when response RX complete is handled before the request TX complete.
In this case the scatter-list is recycled and can be reused before it was unmapped.

Why we didn't see this before?!
Since with the previous implementation the applicationws IO-vector was copied to the task scatter-list
which belongs to the task and thus is never recycled before it was unmapped.

Solution.
I case response is handled before request the "sender-task" scatter list should be unmapped,
and when the TX complete is handled don't do the unmapping when
The TX complete happens (we have a mapped flag).

Issue: 418456

Change-Id: If57ca9ccfc0b55ea7350b5a20489ded6ccddd711
Signed-off-by: Shlomo Pongratz <shlomop@mellanox.com>