Revision tags: openbmc-20160212-1, openbmc-20160210-1, openbmc-20160202-2, openbmc-20160202-1, v4.4.1, openbmc-20160127-1, openbmc-20160120-1, v4.4 |
|
#
59caaed7 |
| 24-Dec-2015 |
Jenny Derzhavetz <jennyf@mellanox.com> |
IB/iser: Support the remote invalidation exception
Declare that we support remote invalidation in case we are: 1. using fastreg method 2. always registering memory
Detect the invalidated rkey from
IB/iser: Support the remote invalidation exception
Declare that we support remote invalidation in case we are: 1. using fastreg method 2. always registering memory
Detect the invalidated rkey from the work completion info so we won't invalidate it locally. The spec mandates that we must not rely on the target remote invalidate our rkey so we must check it upon a receive (scsi response) completion.
Signed-off-by: Jenny Derzhavetz <jennyf@mellanox.com> Signed-off-by: Sagi Grimberg <sagig@mellanox.com> Signed-off-by: Doug Ledford <dledford@redhat.com>
show more ...
|
Revision tags: openbmc-20151217-1, openbmc-20151210-1 |
|
#
d3cf81f9 |
| 09-Dec-2015 |
Sagi Grimberg <sagig@mellanox.com> |
IB/iser,isert: Create and use new shared header
The iser RDMA_CM negotiation protocol is shared by the initiator and the target, so have a shared header for the defines and structure. Move relevant
IB/iser,isert: Create and use new shared header
The iser RDMA_CM negotiation protocol is shared by the initiator and the target, so have a shared header for the defines and structure. Move relevant items from the initiator and target headers.
Signed-off-by: Sagi Grimberg <sagig@mellanox.com> Signed-off-by: Jenny Derzhavetz <jennyf@mellanox.com> Reviewed-by: Christoph Hellwig <hch@lst.de> Signed-off-by: Doug Ledford <dledford@redhat.com>
show more ...
|
#
b5f04b00 |
| 09-Dec-2015 |
Jenny Derzhavetz <jennyf@mellanox.com> |
IB/iser: Don't register memory for all immediate data writes
When all the task data is sent as immediate data, we are allowed to use the local_dma_lkey as it is not sent to the wire.
Signed-off-by:
IB/iser: Don't register memory for all immediate data writes
When all the task data is sent as immediate data, we are allowed to use the local_dma_lkey as it is not sent to the wire.
Signed-off-by: Jenny Derzhavetz <jennyf@mellanox.com> Signed-off-by: Sagi Grimberg <sagig@mellanox.com> Reviewed-by: Christoph Hellwig <hch@lst.de> Signed-off-by: Doug Ledford <dledford@redhat.com>
show more ...
|
#
bfe066e2 |
| 09-Dec-2015 |
Sagi Grimberg <sagig@mellanox.com> |
IB/iser: Reuse ib_sg_to_pages
We have in iser iser_sg_to_page_vec which has exactly the same role as ib_sg_to_pages. Customize the page_vec to hold a fake MR so we can reuse ib_sg_to_pages.
Signed-
IB/iser: Reuse ib_sg_to_pages
We have in iser iser_sg_to_page_vec which has exactly the same role as ib_sg_to_pages. Customize the page_vec to hold a fake MR so we can reuse ib_sg_to_pages.
Signed-off-by: Sagi Grimberg <sagig@mellanox.com> Signed-off-by: Christoph Hellwig <hch@lst.de> Signed-off-by: Doug Ledford <dledford@redhat.com>
show more ...
|
Revision tags: openbmc-20151202-1 |
|
#
2392a4cd |
| 28-Nov-2015 |
Julia Lawall <Julia.Lawall@lip6.fr> |
IB/iser: constify iser_reg_ops structure
The iser_reg_ops structures are never modified, so declare them as const.
Done with the help of Coccinelle.
Signed-off-by: Julia Lawall <Julia.Lawall@lip6.
IB/iser: constify iser_reg_ops structure
The iser_reg_ops structures are never modified, so declare them as const.
Done with the help of Coccinelle.
Signed-off-by: Julia Lawall <Julia.Lawall@lip6.fr> Acked-by: Sagi Grimberg <sagig@mellanox.com> Signed-off-by: Doug Ledford <dledford@redhat.com>
show more ...
|
#
4a061b28 |
| 18-Dec-2015 |
Or Gerlitz <ogerlitz@mellanox.com> |
IB/ulps: Avoid calling ib_query_device
Instead, use the cached copy of the attributes present on the device.
Signed-off-by: Or Gerlitz <ogerlitz@mellanox.com> Signed-off-by: Doug Ledford <dledford@
IB/ulps: Avoid calling ib_query_device
Instead, use the cached copy of the attributes present on the device.
Signed-off-by: Or Gerlitz <ogerlitz@mellanox.com> Signed-off-by: Doug Ledford <dledford@redhat.com>
show more ...
|
#
cfeb91b3 |
| 11-Dec-2015 |
Christoph Hellwig <hch@lst.de> |
IB/iser: Convert to CQ abstraction
Use the new CQ abstraction to simplify completions in the iSER initiator.
Signed-off-by: Sagi Grimberg <sagig@mellanox.com> Signed-off-by: Christoph Hellwig <hch@
IB/iser: Convert to CQ abstraction
Use the new CQ abstraction to simplify completions in the iSER initiator.
Signed-off-by: Sagi Grimberg <sagig@mellanox.com> Signed-off-by: Christoph Hellwig <hch@lst.de>
show more ...
|
Revision tags: openbmc-20151123-1, openbmc-20151118-1, openbmc-20151104-1 |
|
#
7edc5a99 |
| 04-Nov-2015 |
Sagi Grimberg <sagig@mellanox.com> |
IB/iser: Use helper for container_of
Nicer this way.
Signed-off-by: Sagi Grimberg <sagig@mellanox.com> Signed-off-by: Christoph Hellwig <hch@lst.de>
|
#
0f512b34 |
| 04-Nov-2015 |
Sagi Grimberg <sagig@mellanox.com> |
IB/iser: Use a dedicated descriptor for login
We'll need it later with the new CQ abstraction. also switch login bufs to void pointers.
Signed-off-by: Sagi Grimberg <sagig@mellanox.com> Signed-off-
IB/iser: Use a dedicated descriptor for login
We'll need it later with the new CQ abstraction. also switch login bufs to void pointers.
Signed-off-by: Sagi Grimberg <sagig@mellanox.com> Signed-off-by: Christoph Hellwig <hch@lst.de>
show more ...
|
Revision tags: v4.3, openbmc-20151102-1, openbmc-20151028-1 |
|
#
39405885 |
| 13-Oct-2015 |
Sagi Grimberg <sagig@mellanox.com> |
IB/iser: Port to new fast registration API
Remove fastreg page list allocation as the page vector is now private to the provider. Instead of constructing the page list and fast_req work request, cal
IB/iser: Port to new fast registration API
Remove fastreg page list allocation as the page vector is now private to the provider. Instead of constructing the page list and fast_req work request, call ib_map_mr_sg and construct ib_reg_wr.
Signed-off-by: Sagi Grimberg <sagig@mellanox.com> Acked-by: Christoph Hellwig <hch@lst.de> Signed-off-by: Doug Ledford <dledford@redhat.com>
show more ...
|
#
dd0107a0 |
| 13-Oct-2015 |
Sagi Grimberg <sagig@mellanox.com> |
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
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>
show more ...
|
#
e622f2f4 |
| 08-Oct-2015 |
Christoph Hellwig <hch@lst.de> |
IB: split struct ib_send_wr
This patch split up struct ib_send_wr so that all non-trivial verbs use their own structure which embedds struct ib_send_wr. This dramaticly shrinks the size of a WR for
IB: split struct ib_send_wr
This patch split up struct ib_send_wr so that all non-trivial verbs use their own structure which embedds struct ib_send_wr. This dramaticly shrinks the size of a WR for most common operations:
sizeof(struct ib_send_wr) (old): 96
sizeof(struct ib_send_wr): 48 sizeof(struct ib_rdma_wr): 64 sizeof(struct ib_atomic_wr): 96 sizeof(struct ib_ud_wr): 88 sizeof(struct ib_fast_reg_wr): 88 sizeof(struct ib_bind_mw_wr): 96 sizeof(struct ib_sig_handover_wr): 80
And with Sagi's pending MR rework the fast registration WR will also be down to a reasonable size:
sizeof(struct ib_fastreg_wr): 64
Signed-off-by: Christoph Hellwig <hch@lst.de> Reviewed-by: Bart Van Assche <bart.vanassche@sandisk.com> [srp, srpt] Reviewed-by: Chuck Lever <chuck.lever@oracle.com> [sunrpc] Tested-by: Haggai Eran <haggaie@mellanox.com> Tested-by: Sagi Grimberg <sagig@mellanox.com> Tested-by: Steve Wise <swise@opengridcomputing.com>
show more ...
|
#
3cffd930 |
| 24-Sep-2015 |
Sagi Grimberg <sagig@mellanox.com> |
IB/iser: Add module parameter for always register memory
This module parameter forces memory registration even for a continuous memory region. It is true by default as sending an all-physical rkey w
IB/iser: Add module parameter for always register memory
This module parameter forces memory registration even for a continuous memory region. It is true by default as sending an all-physical rkey with remote permissions might be insecure.
Signed-off-by: Sagi Grimberg <sagig@mellanox.com> Signed-off-by: Doug Ledford <dledford@redhat.com>
show more ...
|
Revision tags: v4.3-rc1, v4.2, v4.2-rc8, v4.2-rc7, v4.2-rc6 |
|
#
7332bed0 |
| 06-Aug-2015 |
Sagi Grimberg <sagig@mellanox.com> |
IB/iser: Chain all iser transaction send work requests
Chaning of send work requests benefits performance by reducing the send queue lock contention (acquired in ib_post_send) and saves us HW doorbe
IB/iser: Chain all iser transaction send work requests
Chaning of send work requests benefits performance by reducing the send queue lock contention (acquired in ib_post_send) and saves us HW doorbells which is posted only once.
Currently, in normal IO flows iser does not chain the CDB send work request with the registration work request. Also in PI flows, signature work requests are not chained as well.
Lets chain those and post only once.
Signed-off-by: Sagi Grimberg <sagig@mellanox.com> Signed-off-by: Doug Ledford <dledford@redhat.com>
show more ...
|
#
df749cdc |
| 06-Aug-2015 |
Sagi Grimberg <sagig@mellanox.com> |
IB/iser: Support up to 8MB data transfer in a single command
iser support up to 512KB data transfer in a single scsi command. This means that larger IOs will split to different request. While iser c
IB/iser: Support up to 8MB data transfer in a single command
iser support up to 512KB data transfer in a single scsi command. This means that larger IOs will split to different request. While iser can easily saturate FDR/EDR wires, some arrays are fine tuned for 1MB (or larger) IO sizes, hence add an option to support larger transfers (up to 8MB) if the device allows it.
Given that a few target implementations don't support data transfers of more than 512KB by default and the fact that larger IO sizes require more resources, we introduce a module parameter to determine the maximum number of 512B sectors in a single scsi command. Users that are interested in larger transfers can change this value given that the target supports larger transfers.
At the moment, iser works in 4K pages granularity, In a later stage we will get it to work with system page size instead.
IO operations that consists of N pages will need a page vector of size N+1 in case the first SG element contains an offset. Given that some devices allocates memory regions in powers of 2, this means that allocating a region with N+1 pages, will result in region resources allocation of the next power of 2. Since we don't want that to happen, in case we are in the limit of IO size supported and the first SG element has an offset, we align the SG list using a bounce buffer (which is OK given that this is not likely to happen a lot).
Signed-off-by: Sagi Grimberg <sagig@mellanox.com> Signed-off-by: Doug Ledford <dledford@redhat.com>
show more ...
|
#
f8db651d |
| 06-Aug-2015 |
Sagi Grimberg <sagig@mellanox.com> |
IB/iser: Pass registration pool a size parameter
Hard coded for now. This will allow to allocate different sized MRs depending on the IO size needed (and device capabilities).
This patch does not c
IB/iser: Pass registration pool a size parameter
Hard coded for now. This will allow to allocate different sized MRs depending on the IO size needed (and device capabilities).
This patch does not change any functionality.
Signed-off-by: Sagi Grimberg <sagig@mellanox.com> Signed-off-by: Doug Ledford <dledford@redhat.com>
show more ...
|
#
32467c42 |
| 06-Aug-2015 |
Sagi Grimberg <sagig@mellanox.com> |
IB/iser: Unify fast memory registration flows
iser_reg_rdma_mem_[fastreg|fmr] share a lot of code, and logically do the same thing other than the buffer registration method itself (iser_fast_reg_mr
IB/iser: Unify fast memory registration flows
iser_reg_rdma_mem_[fastreg|fmr] share a lot of code, and logically do the same thing other than the buffer registration method itself (iser_fast_reg_mr vs. iser_fast_reg_fmr). The DIF logic is not implemented in the FMR flow as there is no existing device that supports FMRs and Signature feature.
This patch unifies the flow in a single routine iser_reg_rdma_mem and just split to fmr/frwr for the buffer registration itself.
Also, for symmetry reasons, unify iser_unreg_rdma_mem (which will call the relevant device specific unreg routine).
Signed-off-by: Sagi Grimberg <sagig@mellanox.com> Signed-off-by: Adir Lev <adirl@mellanox.com> Signed-off-by: Doug Ledford <dledford@redhat.com>
show more ...
|
#
81722909 |
| 06-Aug-2015 |
Sagi Grimberg <sagig@mellanox.com> |
IB/iser: Make reg_desc_get a per device routine
As for fmrs we will hold a single registration descriptor as no need for multiple like in the frwr mode (descriptor for each task). This change helps
IB/iser: Make reg_desc_get a per device routine
As for fmrs we will hold a single registration descriptor as no need for multiple like in the frwr mode (descriptor for each task). This change helps unifying the duplicate registration code paths.
Signed-off-by: Sagi Grimberg <sagig@mellanox.com> Signed-off-by: Adir Lev <adirl@mellanox.com> Signed-off-by: Doug Ledford <dledford@redhat.com>
show more ...
|
#
2b3bf958 |
| 06-Aug-2015 |
Adir Lev <adirl@mellanox.com> |
IB/iser: Maintain connection fmr_pool under a single registration descriptor
This will allow us to unify the memory registration code path between the various methods which vary by the device capabi
IB/iser: Maintain connection fmr_pool under a single registration descriptor
This will allow us to unify the memory registration code path between the various methods which vary by the device capabilities. This change will make it easier and less intrusive to remove fmr_pools from the code when we'd want to.
The reason we use a single descriptor is to avoid taking a redundant spinlock when working with FMRs.
We also change the signature of iser_reg_page_vec to make it match iser_fast_reg_mr (and the future indirect registration method).
Signed-off-by: Sagi Grimberg <sagig@mellanox.com> Signed-off-by: Adir Lev <adirl@mellanox.com> Signed-off-by: Doug Ledford <dledford@redhat.com>
show more ...
|
#
385ad87d |
| 06-Aug-2015 |
Sagi Grimberg <sagig@mellanox.com> |
IB/iser: Introduce iser registration pool struct
Instead of having it a part of the connection structure, have it be under a dedicated (embedded) structure in the connection. A logical separation of
IB/iser: Introduce iser registration pool struct
Instead of having it a part of the connection structure, have it be under a dedicated (embedded) structure in the connection. A logical separation of the registration pool and the connection structure.
Signed-off-by: Sagi Grimberg <sagig@mellanox.com> Signed-off-by: Adir Lev <adirl@mellanox.com> Signed-off-by: Doug Ledford <dledford@redhat.com>
show more ...
|
#
48afbff6 |
| 06-Aug-2015 |
Sagi Grimberg <sagig@mellanox.com> |
IB/iser: Introduce iser_reg_ops
Move all the per-device function pointers to an easy extensible iser_reg_ops structure that contains all the iser registration operations.
Signed-off-by: Sagi Grimbe
IB/iser: Introduce iser_reg_ops
Move all the per-device function pointers to an easy extensible iser_reg_ops structure that contains all the iser registration operations.
Signed-off-by: Sagi Grimberg <sagig@mellanox.com> Signed-off-by: Doug Ledford <dledford@redhat.com>
show more ...
|
#
5190cc26 |
| 06-Aug-2015 |
Sagi Grimberg <sagig@mellanox.com> |
IB/iser: Rename struct fast_reg_descriptor -> iser_fr_desc
Avoid struct names without iser_ prefix.
This patch does not change any functionality.
Signed-off-by: Sagi Grimberg <sagig@mellanox.com>
IB/iser: Rename struct fast_reg_descriptor -> iser_fr_desc
Avoid struct names without iser_ prefix.
This patch does not change any functionality.
Signed-off-by: Sagi Grimberg <sagig@mellanox.com> Signed-off-by: Doug Ledford <dledford@redhat.com>
show more ...
|
#
d711d81d |
| 06-Aug-2015 |
Sagi Grimberg <sagig@mellanox.com> |
IB/iser: Introduce struct iser_reg_resources
Have fast_reg_descriptor hold struct iser_reg_resources (mr, frpl, valid flag). This will be useful when the actual buffer registration routines will be
IB/iser: Introduce struct iser_reg_resources
Have fast_reg_descriptor hold struct iser_reg_resources (mr, frpl, valid flag). This will be useful when the actual buffer registration routines will be passed with the needed registration resources (i.e. iser_reg_resources) without being aware of their nature (i.e. data or protection).
In order to achieve this, we remove reg_indicators flags container and place specific flags (mr_valid) within iser_reg_resources struct. We also place the sig_mr_valid and sig_protcted flags in iser_pi_context.
This patch also modifies iser_fast_reg_mr to receive the reg_resources instead of the fast_reg_descriptor and a data/protection indicator.
Signed-off-by: Sagi Grimberg <sagig@mellanox.com> Signed-off-by: Adir Lev <adirl@mellanox.com> Signed-off-by: Doug Ledford <dledford@redhat.com>
show more ...
|
#
8d5944d8 |
| 06-Aug-2015 |
Sagi Grimberg <sagig@mellanox.com> |
IB/iser: Fix possible bogus DMA unmapping
If iser_initialize_task_headers() routine failed before dma mapping, we should not attempt to unmap in cleanup_task().
Fixes: 7414dde0a6c3a958e (IB/iser: F
IB/iser: Fix possible bogus DMA unmapping
If iser_initialize_task_headers() routine failed before dma mapping, we should not attempt to unmap in cleanup_task().
Fixes: 7414dde0a6c3a958e (IB/iser: Fix race between iser connection ...) Signed-off-by: Sagi Grimberg <sagig@mellanox.com> Signed-off-by: Doug Ledford <dledford@redhat.com>
show more ...
|
Revision tags: v4.2-rc5, v4.2-rc4, v4.2-rc3, v4.2-rc2, v4.2-rc1, v4.1, v4.1-rc8, v4.1-rc7, v4.1-rc6, v4.1-rc5, v4.1-rc4, v4.1-rc3, v4.1-rc2, v4.1-rc1 |
|
#
ba943fb2 |
| 14-Apr-2015 |
Sagi Grimberg <sagig@mellanox.com> |
IB/iser: Rewrite bounce buffer code path
In some rare cases, IO operations may be not aligned to page boundaries. This prevents iser from performing fast memory registration. In order to overcome th
IB/iser: Rewrite bounce buffer code path
In some rare cases, IO operations may be not aligned to page boundaries. This prevents iser from performing fast memory registration. In order to overcome that iser uses a bounce buffer to carry the transaction. We basically allocate a buffer in the size of the transaction and perform a copy.
The buffer allocation using kmalloc is too restrictive since it requires higher order (atomic) allocations for large transactions (which may result in memory exhaustion fairly fast for some workloads). We rewrite the bounce buffer code path to allocate scattered pages and perform a copy between the transaction sg and the bounce sg.
Reported-by: Alex Lyakas <alex@zadarastorage.com> Signed-off-by: Sagi Grimberg <sagig@mellanox.com> Signed-off-by: Doug Ledford <dledford@redhat.com>
show more ...
|