Re: [RFC 1/6] bidi support: request dma_data_direction

William Studenmund
2007-01-22T22:23:04Z

On Jan 21, 2007, at 10:06 PM, Benny Halevy wrote:

> Douglas Gilbert wrote:
>> Boaz Harrosh wrote:
>>> - Introduce a new enum dma_data_direction data_dir member in
>>> struct request.
>>> and remove the RW bit from request->cmd_flag
>>> - Add new API to query request direction.
>>> - Adjust existing API and implementation.
>>> - Cleanup wrong use of DMA_BIDIRECTIONAL
>>> - Introduce new blk_rq_init_unqueued_req() and use it in places
>>> ad-hoc
>>> requests were used and bzero'ed.
>>
>> With a bi-directional transfer is it always unambiguous
>> which transfer occurs first (or could they occur at
>> the same time)?
>
> The bidi transfers can occur in any order and in parallel.

Yes.

However it's not that hard. If you're a target (which open-iscsi
isn't), you know what the command needs. If you're an initiator, you
just send the unsolicited data (if any), then let the target tell you
what it needs next.

While it is possible for commands to have multiple phases, all the
BiDi commands I'm familiar with use the Data-Out phase to send extra
command data, then use the Data-In phase to get either an extended
response to the query (such as a search command) or extended status
(OSD commands). So it's not that bad in reality.

Take care,

Bill