IB/iser: Use atomic allocations
Two minor flows in iSER's data path still use allocations; move them to be atomic as a preperation step towards moving to use libiscsi passthrough mode. Signed-off-by: Or Gerlitz <ogerlitz@voltaire.com> Signed-off-by: Roland Dreier <rolandd@cisco.com>
This commit is contained in:
parent
f19624aa92
commit
528f4e8c83
|
@ -373,7 +373,7 @@ int iser_send_data_out(struct iscsi_conn *conn,
|
||||||
iser_dbg("%s itt %d dseg_len %d offset %d\n",
|
iser_dbg("%s itt %d dseg_len %d offset %d\n",
|
||||||
__func__,(int)itt,(int)data_seg_len,(int)buf_offset);
|
__func__,(int)itt,(int)data_seg_len,(int)buf_offset);
|
||||||
|
|
||||||
tx_desc = kmem_cache_zalloc(ig.desc_cache, GFP_NOIO);
|
tx_desc = kmem_cache_zalloc(ig.desc_cache, GFP_ATOMIC);
|
||||||
if (tx_desc == NULL) {
|
if (tx_desc == NULL) {
|
||||||
iser_err("Failed to alloc desc for post dataout\n");
|
iser_err("Failed to alloc desc for post dataout\n");
|
||||||
return -ENOMEM;
|
return -ENOMEM;
|
||||||
|
|
|
@ -53,10 +53,10 @@ static int iser_start_rdma_unaligned_sg(struct iscsi_iser_task *iser_task,
|
||||||
unsigned long cmd_data_len = data->data_len;
|
unsigned long cmd_data_len = data->data_len;
|
||||||
|
|
||||||
if (cmd_data_len > ISER_KMALLOC_THRESHOLD)
|
if (cmd_data_len > ISER_KMALLOC_THRESHOLD)
|
||||||
mem = (void *)__get_free_pages(GFP_NOIO,
|
mem = (void *)__get_free_pages(GFP_ATOMIC,
|
||||||
ilog2(roundup_pow_of_two(cmd_data_len)) - PAGE_SHIFT);
|
ilog2(roundup_pow_of_two(cmd_data_len)) - PAGE_SHIFT);
|
||||||
else
|
else
|
||||||
mem = kmalloc(cmd_data_len, GFP_NOIO);
|
mem = kmalloc(cmd_data_len, GFP_ATOMIC);
|
||||||
|
|
||||||
if (mem == NULL) {
|
if (mem == NULL) {
|
||||||
iser_err("Failed to allocate mem size %d %d for copying sglist\n",
|
iser_err("Failed to allocate mem size %d %d for copying sglist\n",
|
||||||
|
|
Loading…
Reference in New Issue