spdk / spdk

Storage Performance Development Kit
https://spdk.io/
Other
2.93k stars 1.16k forks source link

Partial transfer support in zero copy #2376

Open mkotwani1 opened 2 years ago

mkotwani1 commented 2 years ago

SPDK currently supports only a single phase zero copy, and does not support a case where the bdev can do multiple partial transfers (i.e multi phase) zero copy. In other words, in the current implementation, the entire data for the IO needs to be transferred in a single operation in the transport. The capability to take a single IO and do multiple transfer requests down to the transport from the bdev (i.e. one at a time) does not exist.

For a storage array virtualizing back end physical volumes, multiple products I have worked on do multiple data transfers(i.e one partial transfer at a time outstanding) for a single IO for better flow control at their layers to manage cache pages. SPDK can be used for cases like that in an existing storage array.

Filing this request to see if that work can be prioritized.

mkotwani1 commented 2 years ago

@ksztyber @jimharris @benlwalker

jimharris commented 2 years ago

Hi @mkotwani1,

Thanks for filing this enhancement request. I know we've talked about this feature previously. If you'd like to pick this up, the SPDK community (including Ben, Konrad and me) can certainly help provide guidance.

-Jim

mkotwani1 commented 2 years ago

Hi @jimharris We had made the proposal for multi stage a couple of months back. Are you suggesting we take the current work Konrad has done for single stage with TCP and work with you to implement the proposal we had made on top (after a re-review of the design)?

Thanks!

jimharris commented 2 years ago

Hi @jimharris We had made the proposal for multi stage a couple of months back. Are you suggesting we take the current work Konrad has done for single stage with TCP and work with you to implement the proposal we had made on top (after a re-review of the design)?

Thanks!

Hi @mkotwani1,

Yes, I think that would be the best next step.

-Jim