Unexpected issues with 2 NVME initiators using the same target

Sagi Grimberg sagi at grimberg.me
Sun Jul 2 02:45:26 PDT 2017

>> Or wait for the send completion before completing the I/O?
> In the normal case, that works.
> If a POSIX signal occurs (^C, RPC timeout), the RPC exits immediately
> and recovers all resources. The Send can still be running at that
> point, and it can't be stopped (without transitioning the QP to
> error state, I guess).

In that case we can't complete the I/O either (or move the
QP into error state), we need to defer/sleep on send completion.

> The alternative is reference-counting the data structure that has
> the ib_cqe and the SGE array. That adds one or more atomic_t
> operations per I/O that I'd like to avoid.

Why atomics?

More information about the Linux-nvme mailing list