提交 9a21be53 编写于 作者: S Sagi Grimberg 提交者: Doug Ledford

IB/srp: Dont allocate a page vector when using fast_reg

The new fast registration API does not reuqire a page vector
so we can't avoid allocating it.
Signed-off-by: NSagi Grimberg <sagig@mellanox.com>
Tested-by: NBart Van Assche <bart.vanassche@sandisk.com>
Signed-off-by: NDoug Ledford <dledford@redhat.com>
上级 51c2b8e2
...@@ -840,11 +840,12 @@ static void srp_free_req_data(struct srp_target_port *target, ...@@ -840,11 +840,12 @@ static void srp_free_req_data(struct srp_target_port *target,
for (i = 0; i < target->req_ring_size; ++i) { for (i = 0; i < target->req_ring_size; ++i) {
req = &ch->req_ring[i]; req = &ch->req_ring[i];
if (dev->use_fast_reg) if (dev->use_fast_reg) {
kfree(req->fr_list); kfree(req->fr_list);
else } else {
kfree(req->fmr_list); kfree(req->fmr_list);
kfree(req->map_page); kfree(req->map_page);
}
if (req->indirect_dma_addr) { if (req->indirect_dma_addr) {
ib_dma_unmap_single(ibdev, req->indirect_dma_addr, ib_dma_unmap_single(ibdev, req->indirect_dma_addr,
target->indirect_size, target->indirect_size,
...@@ -878,14 +879,15 @@ static int srp_alloc_req_data(struct srp_rdma_ch *ch) ...@@ -878,14 +879,15 @@ static int srp_alloc_req_data(struct srp_rdma_ch *ch)
GFP_KERNEL); GFP_KERNEL);
if (!mr_list) if (!mr_list)
goto out; goto out;
if (srp_dev->use_fast_reg) if (srp_dev->use_fast_reg) {
req->fr_list = mr_list; req->fr_list = mr_list;
else } else {
req->fmr_list = mr_list; req->fmr_list = mr_list;
req->map_page = kmalloc(srp_dev->max_pages_per_mr * req->map_page = kmalloc(srp_dev->max_pages_per_mr *
sizeof(void *), GFP_KERNEL); sizeof(void *), GFP_KERNEL);
if (!req->map_page) if (!req->map_page)
goto out; goto out;
}
req->indirect_desc = kmalloc(target->indirect_size, GFP_KERNEL); req->indirect_desc = kmalloc(target->indirect_size, GFP_KERNEL);
if (!req->indirect_desc) if (!req->indirect_desc)
goto out; goto out;
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册