1. 14 5月, 2016 1 次提交
    • C
      IB/srpt: convert to the generic RDMA READ/WRITE API · b99f8e4d
      Christoph Hellwig 提交于
      Replace the homegrown RDMA READ/WRITE code in srpt with the generic API.
      The only real twist here is that we need to allocate one Linux scatterlist
      per direct buffer in the SRP command, and chain them before handing them
      off to the target core.
      
      As a side-effect of the conversion the driver will also chain the SEND
      of the SRP response to the RDMA WRITE WRs for a DATA OUT command, and
      properly account for RDMA WRITE WRs instead of just for RDMA READ WRs
      like the driver previously did.
      
      We now allocate half of the SQ size to RDMA READ/WRITE contexts, assuming
      by default one RDMA READ or WRITE operation per command.  If a command
      has multiple operations it will eat into the budget but will still succeed,
      possible after waiting for WQEs to be available.
      
      Also ensure the QPs request the maximum allowed SGEs so that RDMA R/W API
      works correctly.
      Signed-off-by: NChristoph Hellwig <hch@lst.de>
      Reviewed-by: NBart Van Assche <bart.vanassche@sandisk.com>
      Signed-off-by: NDoug Ledford <dledford@redhat.com>
      b99f8e4d
  2. 08 4月, 2016 1 次提交
    • B
      Revert "ib_srpt: Convert to percpu_ida tag allocation" · 3c968887
      Bart Van Assche 提交于
      This reverts commit 0fd10721.
      
      That patch causes the ib_srpt driver to crash as soon as the first SCSI
      command is received:
      
        kernel BUG at drivers/infiniband/ulp/srpt/ib_srpt.c:1439!
        invalid opcode: 0000 [#1] SMP
        Workqueue: target_completion target_complete_ok_work [target_core_mod]
        RIP: srpt_queue_response+0x437/0x4a0 [ib_srpt]
        Call Trace:
          srpt_queue_data_in+0x9/0x10 [ib_srpt]
          target_complete_ok_work+0x152/0x2b0 [target_core_mod]
          process_one_work+0x197/0x480
          worker_thread+0x49/0x490
          kthread+0xea/0x100
          ret_from_fork+0x22/0x40
      
      Aside from the crash, the shortcomings of that patch are as follows:
      
       - It makes the ib_srpt driver use I/O contexts allocated by
         transport_alloc_session_tags() but it does not initialize these I/O
         contexts properly.  All the initializations performed by
         srpt_alloc_ioctx() are skipped.
      
       - It swaps the order of the send ioctx allocation and the transition to
         RTR mode which is wrong.
      
       - The amount of memory that is needed for I/O contexts is doubled.
      
       - srpt_rdma_ch.free_list is no longer used but is not removed.
      Signed-off-by: NBart Van Assche <bart.vanassche@sandisk.com>
      Cc: Nicholas Bellinger <nab@linux-iscsi.org>
      Signed-off-by: NLinus Torvalds <torvalds@linux-foundation.org>
      3c968887
  3. 22 3月, 2016 1 次提交
  4. 11 3月, 2016 2 次提交
  5. 01 3月, 2016 21 次提交
  6. 20 1月, 2016 2 次提交
  7. 13 1月, 2016 1 次提交
    • N
      ib_srpt: Convert acl lookup to modern get_initiator_node_acl usage · f246c941
      Nicholas Bellinger 提交于
      This patch does a simple conversion of ib_srpt code to use
      proper modern core_tpg_get_initiator_node_acl() lookup using
      se_node_acl->acl_kref, and drops the legacy internal list
      usage from srpt_lookup_acl().
      
      This involves doing transport_init_session() earlier, and
      making sure transport_free_session() is called during
      a se_node_acl lookup failure to drop the last ->acl_kref.
      
      Also, it adds a minor backwards-compat hack to avoid the
      potential for user-space wrt node-acl WWPN formatting by
      simply stripping off '0x' prefix from ch->sess_name, and
      retrying once if core_tpg_get_initiator_node_acl() fails.
      
      Finally, go ahead and drop port_acl_list port_acl_lock
      since they are no longer used.
      
      Cc: Vu Pham <vu@mellanox.com>
      Cc: Sagi Grimberg <sagig@mellanox.com>
      Cc: Christoph Hellwig <hch@lst.de>
      Cc: Hannes Reinecke <hare@suse.de>
      Cc: Andy Grover <agrover@redhat.com>
      Signed-off-by: NNicholas Bellinger <nab@linux-iscsi.org>
      f246c941
  8. 23 12月, 2015 1 次提交
  9. 12 12月, 2015 1 次提交
  10. 22 10月, 2015 1 次提交
  11. 14 10月, 2015 1 次提交
  12. 08 10月, 2015 1 次提交
    • C
      IB: split struct ib_send_wr · e622f2f4
      Christoph Hellwig 提交于
      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: NChristoph 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: NHaggai Eran <haggaie@mellanox.com>
      Tested-by: NSagi Grimberg <sagig@mellanox.com>
      Tested-by: NSteve Wise <swise@opengridcomputing.com>
      e622f2f4
  13. 31 8月, 2015 3 次提交
  14. 15 7月, 2015 1 次提交
  15. 16 6月, 2015 1 次提交
    • N
      target: Drop unnecessary core_tpg_register TFO parameter · bc0c94b1
      Nicholas Bellinger 提交于
      This patch drops unnecessary target_core_fabric_ops parameter usage
      for core_tpg_register() during fabric driver TFO->fabric_make_tpg()
      se_portal_group creation callback execution.
      
      Instead, use the existing se_wwn->wwn_tf->tf_ops pointer to ensure
      fabric driver is really using the same TFO provided at module_init
      time.
      
      Also go ahead and drop the forward TFO declarations tree-wide, and
      handling the special case for iscsi-target discovery TPG.
      
      Cc: Christoph Hellwig <hch@lst.de>
      Reviewed-by: NHannes Reinecke <hare@suse.de>
      Signed-off-by: NNicholas Bellinger <nab@linux-iscsi.org>
      bc0c94b1
  16. 13 6月, 2015 1 次提交