IB/iser: Move fast_reg_descriptor initialization to a function
fastreg descriptor will include protection information context. In order to place the logic in one place we introduce iser_create_fr_desc function. This patch does not change any functionality. Signed-off-by: Sagi Grimberg <sagig@mellanox.com> Signed-off-by: Alex Tabachnik <alext@mellanox.com> Signed-off-by: Roland Dreier <roland@purestorage.com>
This commit is contained in:
parent
d11ec4ecf0
commit
310b347c60
|
@ -279,6 +279,39 @@ void iser_free_fmr_pool(struct iser_conn *ib_conn)
|
||||||
ib_conn->fmr.page_vec = NULL;
|
ib_conn->fmr.page_vec = NULL;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static int
|
||||||
|
iser_create_fastreg_desc(struct ib_device *ib_device, struct ib_pd *pd,
|
||||||
|
struct fast_reg_descriptor *desc)
|
||||||
|
{
|
||||||
|
int ret;
|
||||||
|
|
||||||
|
desc->data_frpl = ib_alloc_fast_reg_page_list(ib_device,
|
||||||
|
ISCSI_ISER_SG_TABLESIZE + 1);
|
||||||
|
if (IS_ERR(desc->data_frpl)) {
|
||||||
|
ret = PTR_ERR(desc->data_frpl);
|
||||||
|
iser_err("Failed to allocate ib_fast_reg_page_list err=%d\n",
|
||||||
|
ret);
|
||||||
|
return PTR_ERR(desc->data_frpl);
|
||||||
|
}
|
||||||
|
|
||||||
|
desc->data_mr = ib_alloc_fast_reg_mr(pd, ISCSI_ISER_SG_TABLESIZE + 1);
|
||||||
|
if (IS_ERR(desc->data_mr)) {
|
||||||
|
ret = PTR_ERR(desc->data_mr);
|
||||||
|
iser_err("Failed to allocate ib_fast_reg_mr err=%d\n", ret);
|
||||||
|
goto fast_reg_mr_failure;
|
||||||
|
}
|
||||||
|
iser_info("Create fr_desc %p page_list %p\n",
|
||||||
|
desc, desc->data_frpl->page_list);
|
||||||
|
desc->valid = true;
|
||||||
|
|
||||||
|
return 0;
|
||||||
|
|
||||||
|
fast_reg_mr_failure:
|
||||||
|
ib_free_fast_reg_page_list(desc->data_frpl);
|
||||||
|
|
||||||
|
return ret;
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* iser_create_fastreg_pool - Creates pool of fast_reg descriptors
|
* iser_create_fastreg_pool - Creates pool of fast_reg descriptors
|
||||||
* for fast registration work requests.
|
* for fast registration work requests.
|
||||||
|
@ -300,32 +333,21 @@ int iser_create_fastreg_pool(struct iser_conn *ib_conn, unsigned cmds_max)
|
||||||
goto err;
|
goto err;
|
||||||
}
|
}
|
||||||
|
|
||||||
desc->data_frpl = ib_alloc_fast_reg_page_list(device->ib_device,
|
ret = iser_create_fastreg_desc(device->ib_device,
|
||||||
ISCSI_ISER_SG_TABLESIZE + 1);
|
device->pd, desc);
|
||||||
if (IS_ERR(desc->data_frpl)) {
|
if (ret) {
|
||||||
ret = PTR_ERR(desc->data_frpl);
|
iser_err("Failed to create fastreg descriptor err=%d\n",
|
||||||
iser_err("Failed to allocate ib_fast_reg_page_list err=%d\n", ret);
|
ret);
|
||||||
goto fast_reg_page_failure;
|
kfree(desc);
|
||||||
|
goto err;
|
||||||
}
|
}
|
||||||
|
|
||||||
desc->data_mr = ib_alloc_fast_reg_mr(device->pd,
|
|
||||||
ISCSI_ISER_SG_TABLESIZE + 1);
|
|
||||||
if (IS_ERR(desc->data_mr)) {
|
|
||||||
ret = PTR_ERR(desc->data_mr);
|
|
||||||
iser_err("Failed to allocate ib_fast_reg_mr err=%d\n", ret);
|
|
||||||
goto fast_reg_mr_failure;
|
|
||||||
}
|
|
||||||
desc->valid = true;
|
|
||||||
list_add_tail(&desc->list, &ib_conn->fastreg.pool);
|
list_add_tail(&desc->list, &ib_conn->fastreg.pool);
|
||||||
ib_conn->fastreg.pool_size++;
|
ib_conn->fastreg.pool_size++;
|
||||||
}
|
}
|
||||||
|
|
||||||
return 0;
|
return 0;
|
||||||
|
|
||||||
fast_reg_mr_failure:
|
|
||||||
ib_free_fast_reg_page_list(desc->data_frpl);
|
|
||||||
fast_reg_page_failure:
|
|
||||||
kfree(desc);
|
|
||||||
err:
|
err:
|
||||||
iser_free_fastreg_pool(ib_conn);
|
iser_free_fastreg_pool(ib_conn);
|
||||||
return ret;
|
return ret;
|
||||||
|
|
Loading…
Reference in New Issue