Hi Kashyap Desai,
Unfortunately, there is a wider problem in iser that we do the local
invalidation if any, after we complete the iscsi task.
So the right solution is to do the logic we have in NVMe/RDMA that
checks if remote invalidation happened and if not, it does local
invalidation.
And the task is released after getting the send_completion and
local_invalidation/remote invalidation.
There is some infrastructure work needed to be done there.
Sagi,
Please remind me few things regarding the iSCSI bidir cmds.
In case of bidir IO cmd, if we need to use a reg_mr for it - I see a
potential problem there.
Not surprising.
Is this scenario possible ?
There is no longer bidi support in scsi.
See patch: ae3d56d81507 ("scsi: remove bidirectional command support")
I'm asking because if it is possible, so what happens in remote
invalidation ? what key is invalidated ? the read_key or the write_key ?
in ib_isert there is a priority to the read_key (is it by the spec ?).
The spec never addressed this. It wasn't well defined what to do with
remote invalidation for bidi commands.
We don't consider this in the iser recv completion and the remote
invalidation checker logic.
If it's not possible we should re-design few components in the code and
fix the issue that we do local_invalidation of cmd N during the send of
cmd N + 1.
We shouldn't bother, no consumer of this is left.