Advertisement
Guest User

Untitled

a guest
Jul 28th, 2015
230
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 3.07 KB | None | 0 0
  1. From: Sagi Grimberg <sagig@mellanox.com>
  2. Date: Thu, 9 Jan 2014 18:40:54 +0200
  3. Subject: IB/isert: pass scatterlist instead of cmd to fast_reg_mr routine
  4. References: bnc#873901
  5. Patch-Mainline: v3.14-rc1
  6. Git-commit: 9bd626e79df67b2ba3b0c91a4640ab7bca1af04d
  7.  
  8. This routine may help for protection registration as well.
  9. This patch does not change any functionality.
  10.  
  11. Signed-off-by: Sagi Grimberg <sagig@mellanox.com>
  12. Signed-off-by: Nicholas Bellinger <nab@linux-iscsi.org>
  13. Acked-by: Hannes Reinecke <hare@suse.de>
  14. ---
  15. drivers/infiniband/ulp/isert/ib_isert.c | 28 ++++++++++++----------------
  16. 1 file changed, 12 insertions(+), 16 deletions(-)
  17.  
  18. diff --git a/drivers/infiniband/ulp/isert/ib_isert.c b/drivers/infiniband/ulp/isert/ib_isert.c
  19. index 6d6cd18..cce7c05 100644
  20. --- a/drivers/infiniband/ulp/isert/ib_isert.c
  21. +++ b/drivers/infiniband/ulp/isert/ib_isert.c
  22. @@ -2191,26 +2191,22 @@ isert_map_fr_pagelist(struct ib_device *ib_dev,
  23.  
  24. static int
  25. isert_fast_reg_mr(struct fast_reg_descriptor *fr_desc,
  26. - struct isert_cmd *isert_cmd, struct isert_conn *isert_conn,
  27. - struct ib_sge *ib_sge, u32 offset, unsigned int data_len)
  28. + struct isert_conn *isert_conn, struct scatterlist *sg_start,
  29. + struct ib_sge *ib_sge, u32 sg_nents, u32 offset,
  30. + unsigned int data_len)
  31. {
  32. - struct iscsi_cmd *cmd = isert_cmd->iscsi_cmd;
  33. struct ib_device *ib_dev = isert_conn->conn_cm_id->device;
  34. - struct scatterlist *sg_start;
  35. - u32 sg_off, page_off;
  36. struct ib_send_wr fr_wr, inv_wr;
  37. struct ib_send_wr *bad_wr, *wr = NULL;
  38. + int ret, pagelist_len;
  39. + u32 page_off;
  40. u8 key;
  41. - int ret, sg_nents, pagelist_len;
  42.  
  43. - sg_off = offset / PAGE_SIZE;
  44. - sg_start = &cmd->se_cmd.t_data_sg[sg_off];
  45. - sg_nents = min_t(unsigned int, cmd->se_cmd.t_data_nents - sg_off,
  46. - ISCSI_ISER_SG_TABLESIZE);
  47. + sg_nents = min_t(unsigned int, sg_nents, ISCSI_ISER_SG_TABLESIZE);
  48. page_off = offset % PAGE_SIZE;
  49.  
  50. - pr_debug("Cmd: %p use fr_desc %p sg_nents %d sg_off %d offset %u\n",
  51. - isert_cmd, fr_desc, sg_nents, sg_off, offset);
  52. + pr_debug("Use fr_desc %p sg_nents %d offset %u\n",
  53. + fr_desc, sg_nents, offset);
  54.  
  55. pagelist_len = isert_map_fr_pagelist(ib_dev, sg_start, sg_nents,
  56. &fr_desc->data_frpl->page_list[0]);
  57. @@ -2281,9 +2277,9 @@ isert_reg_rdma(struct iscsi_conn *conn, struct iscsi_cmd *cmd,
  58. if (wr->iser_ib_op == ISER_IB_RDMA_WRITE) {
  59. data_left = se_cmd->data_length;
  60. } else {
  61. - sg_off = cmd->write_data_done / PAGE_SIZE;
  62. - data_left = se_cmd->data_length - cmd->write_data_done;
  63. offset = cmd->write_data_done;
  64. + sg_off = offset / PAGE_SIZE;
  65. + data_left = se_cmd->data_length - cmd->write_data_done;
  66. isert_cmd->tx_desc.isert_cmd = isert_cmd;
  67. }
  68.  
  69. @@ -2347,8 +2343,8 @@ isert_reg_rdma(struct iscsi_conn *conn, struct iscsi_cmd *cmd,
  70. spin_unlock_irqrestore(&isert_conn->conn_lock, flags);
  71. wr->fr_desc = fr_desc;
  72.  
  73. - ret = isert_fast_reg_mr(fr_desc, isert_cmd, isert_conn,
  74. - ib_sge, offset, data_len);
  75. + ret = isert_fast_reg_mr(fr_desc, isert_conn, sg_start,
  76. + ib_sge, sg_nents, offset, data_len);
  77. if (ret) {
  78. list_add_tail(&fr_desc->list, &isert_conn->conn_fr_pool);
  79. goto unmap_sg;
  80. --
  81. 1.7.12.4
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement