• Bart Van Assche's avatar
    Revert "ib_srpt: Convert to percpu_ida tag allocation" · 3c968887
    Bart Van Assche authored
    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: default avatarBart Van Assche <bart.vanassche@sandisk.com>
    Cc: Nicholas Bellinger <nab@linux-iscsi.org>
    Signed-off-by: default avatarLinus Torvalds <torvalds@linux-foundation.org>
    3c968887
ib_srpt.c 87.3 KB