IB/iser: set block queue_virt_boundary
authorSagi Grimberg <sagig@mellanox.com>
Tue, 13 Oct 2015 16:12:58 +0000 (19:12 +0300)
committerDoug Ledford <dledford@redhat.com>
Wed, 28 Oct 2015 16:26:06 +0000 (12:26 -0400)
commitdd0107a08996c0ab8cac2b98ddbed5313e118e81
tree1248e196a4cfc38d3c06b736171249e395e19fe7
parent6c760b3dd576329e776b353f2eaefbe2034361b9
IB/iser: set block queue_virt_boundary

The block layer can reliably guarantee that SG lists won't
contain gaps (page unaligned) if a driver set the queue
virt_boundary.

With this setting the block layer will:
- refuse merges if bios are not aligned to the virtual boundary
- split bios/requests that are not aligned to the virtual boundary
- or, bounce buffer SG_IOs that are not aligned to the virtual boundary

Since iser is working in 4K page size, set the virt_boundary to
4K pages. With this setting, we can now safely remove the bounce
buffering logic in iser.

Signed-off-by: Sagi Grimberg <sagig@mellanox.com>
Reviewed-by: Christoph Hellwig <hch@lst.de>
Signed-off-by: Doug Ledford <dledford@redhat.com>
drivers/infiniband/ulp/iser/iscsi_iser.c
drivers/infiniband/ulp/iser/iscsi_iser.h
drivers/infiniband/ulp/iser/iser_initiator.c
drivers/infiniband/ulp/iser/iser_memory.c