IB/srp: Add multichannel support
authorBart Van Assche <bvanassche@acm.org>
Mon, 6 Oct 2014 15:14:36 +0000 (17:14 +0200)
committerChristoph Hellwig <hch@lst.de>
Wed, 12 Nov 2014 11:05:24 +0000 (12:05 +0100)
commitd92c0da71a35dfddccca7bfa932829504311359e
tree84b87ede947430e8b53b33bf99c349c99243cb9d
parent77f2c1a40e6fed202d08c8ec0bdca36a76dab368
IB/srp: Add multichannel support

Improve performance by using multiple RDMA/RC channels per SCSI
host for communication with an SRP target. About the
implementation:
- Introduce a loop over all channels in the code that uses
  target->ch.
- Set the SRP_MULTICHAN_MULTI flag during login for the creation
  of the second and subsequent channels.
- RDMA completion vectors are chosen such that RDMA completion
  interrupts are handled by the CPU socket that submitted the I/O
  request. As one can see in this patch it has been assumed if a
  system contains n CPU sockets and m RDMA completion vectors
  have been assigned to an RDMA HCA that IRQ affinity has been
  configured such that completion vectors [i*m/n..(i+1)*m/n) are
  bound to CPU socket i with 0 <= i < n.
- Modify srp_free_ch_ib() and srp_free_req_data() such that it
  becomes safe to invoke these functions after the corresponding
  allocation function failed.
- Add a ch_count sysfs attribute per target port.

Signed-off-by: Bart Van Assche <bvanassche@acm.org>
Reviewed-by: Sagi Grimberg <sagig@mellanox.com>
Signed-off-by: Christoph Hellwig <hch@lst.de>
Documentation/ABI/stable/sysfs-driver-ib_srp
drivers/infiniband/ulp/srp/ib_srp.c
drivers/infiniband/ulp/srp/ib_srp.h