RE: [PATCH 3/9] IB: add a helper to safely drain a QP

Steve Wise
2015-11-16T19:03:29Z

> -----Original Message-----
> From: linux-rdma-owner@vger.kernel.org [mailto:linux-rdma-owner@vger.kernel.org] On Behalf Of Sagi Grimberg
> Sent: Monday, November 16, 2015 12:38 PM
> To: Steve Wise; 'Christoph Hellwig'; linux-rdma@vger.kernel.org
> Cc: bart.vanassche@sandisk.com; axboe@fb.com; linux-scsi@vger.kernel.org; linux-kernel@vger.kernel.org
> Subject: Re: [PATCH 3/9] IB: add a helper to safely drain a QP
>
>
> > After looking at the nes driver, I don't see any common way to support drain w/o some serious driver mods. Since SRP is the
only
> > user, perhaps we can ignore iWARP for this function...
>
> But iser/isert essentially does it too (and I think xprtrdma will have
> it soon)...
>
> the modify_qp is invoked from rdma_disconnect() and we do post
> an 'empty' wr to wait for all the flushes to drain (see
> iser_conn_terminate).

That won't work for iWARP. Is this code new? I didn't see any errors that would result from this code when I tested iSER over
cxgb4 with the old iwarp support patches.

Perhaps we need another way to do this? Like a completion object in the QP that gets triggered when the SQ and RQ become empty
after a transition to ERROR (and CLOSING for iwarp). Then a core service that just waits until the QP is empty. Implementation of
this design would hit the providers though since only they know when the flush is completed.

Alternatively, I could enable post-while-in-error support in cxgb4 and ignore the spec in this regard. But I'd rather not do that.
:)

Steve.