Skip to content
Permalink
Daniel-Wagner/…
Switch branches/tags

Commits on Jun 16, 2021

  1. qla2xxx: synchronize rport dev_loss_tmo setting

    Currently, the dev_loss_tmo setting is only ever used for SCSI
    devices. This patch reshuffles initialisation such that the SCSI
    remote ports are registered before the NVMe ones, allowing the
    dev_loss_tmo setting to be synchronized between SCSI and NVMe.
    
    Signed-off-by: Hannes Reinecke <hare@suse.de>
    Signed-off-by: Daniel Wagner <dwagner@suse.de>
    hreinecke authored and intel-lab-lkp committed Jun 16, 2021

Commits on Jun 8, 2021

  1. Merge branch 'fixes' into for-next

    James Bottomley authored and James Bottomley committed Jun 8, 2021
  2. Merge branch 'misc' into for-next

    James Bottomley authored and James Bottomley committed Jun 8, 2021
  3. scsi: core: Only put parent device if host state differs from SHOST_C…

    …REATED
    
    get_device(shost->shost_gendev.parent) is called after host state has
    switched to SHOST_RUNNING. scsi_host_dev_release() shouldn't release the
    parent device if host state is still SHOST_CREATED.
    
    Link: https://lore.kernel.org/r/20210602133029.2864069-5-ming.lei@redhat.com
    Cc: Bart Van Assche <bvanassche@acm.org>
    Cc: John Garry <john.garry@huawei.com>
    Cc: Hannes Reinecke <hare@suse.de>
    Tested-by: John Garry <john.garry@huawei.com>
    Reviewed-by: John Garry <john.garry@huawei.com>
    Signed-off-by: Ming Lei <ming.lei@redhat.com>
    Signed-off-by: Martin K. Petersen <martin.petersen@oracle.com>
    Ming Lei authored and martinkpetersen committed Jun 8, 2021
  4. scsi: core: Put .shost_dev in failure path if host state changes to R…

    …UNNING
    
    scsi_host_dev_release() only frees dev_name when host state is
    SHOST_CREATED. After host state has changed to SHOST_RUNNING,
    scsi_host_dev_release() no longer cleans up.
    
    Fix this by doing a put_device(&shost->shost_dev) in the failure path when
    host state is SHOST_RUNNING. Move get_device(&shost->shost_gendev) before
    device_add(&shost->shost_dev) so that scsi_host_cls_release() can do a put
    on this reference.
    
    Link: https://lore.kernel.org/r/20210602133029.2864069-4-ming.lei@redhat.com
    Cc: Bart Van Assche <bvanassche@acm.org>
    Cc: Hannes Reinecke <hare@suse.de>
    Reported-by: John Garry <john.garry@huawei.com>
    Tested-by: John Garry <john.garry@huawei.com>
    Reviewed-by: John Garry <john.garry@huawei.com>
    Reviewed-by: Hannes Reinecke <hare@suse.de>
    Signed-off-by: Ming Lei <ming.lei@redhat.com>
    Signed-off-by: Martin K. Petersen <martin.petersen@oracle.com>
    Ming Lei authored and martinkpetersen committed Jun 8, 2021
  5. scsi: core: Fix failure handling of scsi_add_host_with_dma()

    When scsi_add_host_with_dma() returns failure, the caller will call
    scsi_host_put(shost) to release everything allocated for this host
    instance. Consequently we can't also free allocated stuff in
    scsi_add_host_with_dma(), otherwise we will end up with a double free.
    
    Strictly speaking, host resource allocations should have been done in
    scsi_host_alloc(). However, the allocations may need information which is
    not yet provided by the driver when that function is called. So leave the
    allocations where they are but rely on host device's release handler to
    free resources.
    
    Link: https://lore.kernel.org/r/20210602133029.2864069-3-ming.lei@redhat.com
    Cc: Bart Van Assche <bvanassche@acm.org>
    Cc: John Garry <john.garry@huawei.com>
    Cc: Hannes Reinecke <hare@suse.de>
    Tested-by: John Garry <john.garry@huawei.com>
    Reviewed-by: Bart Van Assche <bvanassche@acm.org>
    Reviewed-by: John Garry <john.garry@huawei.com>
    Reviewed-by: Hannes Reinecke <hare@suse.de>
    Signed-off-by: Ming Lei <ming.lei@redhat.com>
    Signed-off-by: Martin K. Petersen <martin.petersen@oracle.com>
    Ming Lei authored and martinkpetersen committed Jun 8, 2021
  6. scsi: core: Fix error handling of scsi_host_alloc()

    After device is initialized via device_initialize(), or its name is set via
    dev_set_name(), the device has to be freed via put_device().  Otherwise
    device name will be leaked because it is allocated dynamically in
    dev_set_name().
    
    Fix the leak by replacing kfree() with put_device(). Since
    scsi_host_dev_release() properly handles IDA and kthread removal, remove
    special-casing these from the error handling as well.
    
    Link: https://lore.kernel.org/r/20210602133029.2864069-2-ming.lei@redhat.com
    Cc: Bart Van Assche <bvanassche@acm.org>
    Cc: John Garry <john.garry@huawei.com>
    Cc: Hannes Reinecke <hare@suse.de>
    Tested-by: John Garry <john.garry@huawei.com>
    Reviewed-by: Bart Van Assche <bvanassche@acm.org>
    Reviewed-by: John Garry <john.garry@huawei.com>
    Reviewed-by: Hannes Reinecke <hare@suse.de>
    Signed-off-by: Ming Lei <ming.lei@redhat.com>
    Signed-off-by: Martin K. Petersen <martin.petersen@oracle.com>
    Ming Lei authored and martinkpetersen committed Jun 8, 2021

Commits on Jun 2, 2021

  1. Merge branch 'fixes' into for-next

    James Bottomley authored and James Bottomley committed Jun 2, 2021
  2. scsi: qedi: Wake up if cmd_cleanup_req is set

    If we got a response then we should always wake up the conn. For both the
    cmd_cleanup_req == 0 or cmd_cleanup_req > 0, we shouldn't dig into
    iscsi_itt_to_task because we don't know what the upper layers are doing.
    
    We can also remove the qedi_clear_task_idx call here because once we signal
    success libiscsi will loop over the affected commands and end up calling
    the cleanup_task callout which will release it.
    
    Link: https://lore.kernel.org/r/20210525181821.7617-29-michael.christie@oracle.com
    Reviewed-by: Manish Rangankar <mrangankar@marvell.com>
    Signed-off-by: Mike Christie <michael.christie@oracle.com>
    Signed-off-by: Martin K. Petersen <martin.petersen@oracle.com>
    mikechristie authored and martinkpetersen committed Jun 2, 2021
  3. scsi: qedi: Complete TMF works before disconnect

    We need to make sure that abort and reset completion work has completed
    before ep_disconnect returns. After ep_disconnect we can't manipulate
    cmds because libiscsi will call conn_stop and take onwership.
    
    We are trying to make sure abort work and reset completion work has
    completed before we do the cmd clean up in ep_disconnect. The problem is
    that:
    
     1. the work function sets the QEDI_CONN_FW_CLEANUP bit, so if the work was
        still pending we would not see the bit set. We need to do this before
        the work is queued.
    
     2. If we had multiple works queued then we could break from the loop in
        qedi_ep_disconnect early because when abort work 1 completes it could
        clear QEDI_CONN_FW_CLEANUP. qedi_ep_disconnect could then see that
        before work 2 has run.
    
     3. A TMF reset completion work could run after ep_disconnect starts
        cleaning up cmds via qedi_clearsq. ep_disconnect's call to qedi_clearsq
        -> qedi_cleanup_all_io would might think it's done cleaning up cmds,
        but the reset completion work could still be running. We then return
        from ep_disconnect while still doing cleanup.
    
    This replaces the bit with a counter to track the number of queued TMF
    works, and adds a bool to prevent new works from starting from the
    completion path once a ep_disconnect starts.
    
    Link: https://lore.kernel.org/r/20210525181821.7617-28-michael.christie@oracle.com
    Reviewed-by: Manish Rangankar <mrangankar@marvell.com>
    Signed-off-by: Mike Christie <michael.christie@oracle.com>
    Signed-off-by: Martin K. Petersen <martin.petersen@oracle.com>
    mikechristie authored and martinkpetersen committed Jun 2, 2021
  4. scsi: qedi: Pass send_iscsi_tmf task to abort

    qedi_abort_work knows what task to abort so just pass it to send_iscsi_tmf.
    
    Link: https://lore.kernel.org/r/20210525181821.7617-27-michael.christie@oracle.com
    Reviewed-by: Manish Rangankar <mrangankar@marvell.com>
    Signed-off-by: Mike Christie <michael.christie@oracle.com>
    Signed-off-by: Martin K. Petersen <martin.petersen@oracle.com>
    mikechristie authored and martinkpetersen committed Jun 2, 2021
  5. scsi: qedi: Fix cleanup session block/unblock use

    Drivers shouldn't be calling block/unblock session for cmd cleanup because
    the functions can change the session state from under libiscsi.  This adds
    a new a driver level bit so it can block all I/O the host while it drains
    the card.
    
    Link: https://lore.kernel.org/r/20210525181821.7617-26-michael.christie@oracle.com
    Reviewed-by: Manish Rangankar <mrangankar@marvell.com>
    Signed-off-by: Mike Christie <michael.christie@oracle.com>
    Signed-off-by: Martin K. Petersen <martin.petersen@oracle.com>
    mikechristie authored and martinkpetersen committed Jun 2, 2021
  6. scsi: qedi: Fix TMF session block/unblock use

    Drivers shouldn't be calling block/unblock session for tmf handling because
    the functions can change the session state from under libiscsi.
    iscsi_queuecommand's call to iscsi_prep_scsi_cmd_pdu->
    iscsi_check_tmf_restrictions will prevent new cmds from being sent to qedi
    after we've started handling a TMF. So we don't need to try and block it in
    the driver, and we can remove these block calls.
    
    Link: https://lore.kernel.org/r/20210525181821.7617-25-michael.christie@oracle.com
    Reviewed-by: Manish Rangankar <mrangankar@marvell.com>
    Signed-off-by: Mike Christie <michael.christie@oracle.com>
    Signed-off-by: Martin K. Petersen <martin.petersen@oracle.com>
    mikechristie authored and martinkpetersen committed Jun 2, 2021
  7. scsi: qedi: Use GFP_NOIO for TMF allocation

    We run from a workqueue with no locks held so use GFP_NOIO.
    
    Link: https://lore.kernel.org/r/20210525181821.7617-24-michael.christie@oracle.com
    Reviewed-by: Manish Rangankar <mrangankar@marvell.com>
    Signed-off-by: Mike Christie <michael.christie@oracle.com>
    Signed-off-by: Martin K. Petersen <martin.petersen@oracle.com>
    mikechristie authored and martinkpetersen committed Jun 2, 2021
  8. scsi: qedi: Fix TMF tid allocation

    qedi_iscsi_abort_work and qedi_tmf_work both allocate a tid then call
    qedi_send_iscsi_tmf which also allocates a tid. This removes the tid
    allocation from the callers.
    
    Link: https://lore.kernel.org/r/20210525181821.7617-23-michael.christie@oracle.com
    Reviewed-by: Manish Rangankar <mrangankar@marvell.com>
    Signed-off-by: Mike Christie <michael.christie@oracle.com>
    Signed-off-by: Martin K. Petersen <martin.petersen@oracle.com>
    mikechristie authored and martinkpetersen committed Jun 2, 2021
  9. scsi: qedi: Fix use after free during abort cleanup

    If qedi_tmf_work's qedi_wait_for_cleanup_request call times out we will
    also force the clean up of the qedi_work_map but
    qedi_process_cmd_cleanup_resp could still be accessing the qedi_cmd.
    
    To fix this issue we extend where we hold the tmf_work_lock and back_lock
    so the qedi_process_cmd_cleanup_resp access is serialized with the cleanup
    done in qedi_tmf_work and any completion handling for the iscsi_task.
    
    Link: https://lore.kernel.org/r/20210525181821.7617-22-michael.christie@oracle.com
    Reviewed-by: Manish Rangankar <mrangankar@marvell.com>
    Signed-off-by: Mike Christie <michael.christie@oracle.com>
    Signed-off-by: Martin K. Petersen <martin.petersen@oracle.com>
    mikechristie authored and martinkpetersen committed Jun 2, 2021
  10. scsi: qedi: Fix race during abort timeouts

    If the SCSI cmd completes after qedi_tmf_work calls iscsi_itt_to_task then
    the qedi qedi_cmd->task_id could be freed and used for another cmd. If we
    then call qedi_iscsi_cleanup_task with that task_id we will be cleaning up
    the wrong cmd.
    
    Wait to release the task_id until the last put has been done on the
    iscsi_task. Because libiscsi grabs a ref to the task when sending the
    abort, we know that for the non-abort timeout case that the task_id we are
    referencing is for the cmd that was supposed to be aborted.
    
    A latter commit will fix the case where the abort times out while we are
    running qedi_tmf_work.
    
    Link: https://lore.kernel.org/r/20210525181821.7617-21-michael.christie@oracle.com
    Reviewed-by: Manish Rangankar <mrangankar@marvell.com>
    Signed-off-by: Mike Christie <michael.christie@oracle.com>
    Signed-off-by: Martin K. Petersen <martin.petersen@oracle.com>
    mikechristie authored and martinkpetersen committed Jun 2, 2021
  11. scsi: qedi: Fix null ref during abort handling

    If qedi_process_cmd_cleanup_resp finds the cmd it frees the work and sets
    list_tmf_work to NULL, so qedi_tmf_work should check if list_tmf_work is
    non-NULL when it wants to force cleanup.
    
    Link: https://lore.kernel.org/r/20210525181821.7617-20-michael.christie@oracle.com
    Reviewed-by: Manish Rangankar <mrangankar@marvell.com>
    Signed-off-by: Mike Christie <michael.christie@oracle.com>
    Signed-off-by: Martin K. Petersen <martin.petersen@oracle.com>
    mikechristie authored and martinkpetersen committed Jun 2, 2021
  12. scsi: iscsi: Move pool freeing

    This doesn't fix any bugs, but it makes more sense to free the pool after
    we have removed the session. At that time we know nothing is touching any
    of the session fields, because all devices have been removed and scans are
    stopped.
    
    Link: https://lore.kernel.org/r/20210525181821.7617-19-michael.christie@oracle.com
    Reviewed-by: Lee Duncan <lduncan@suse.com>
    Signed-off-by: Mike Christie <michael.christie@oracle.com>
    Signed-off-by: Martin K. Petersen <martin.petersen@oracle.com>
    mikechristie authored and martinkpetersen committed Jun 2, 2021
  13. scsi: iscsi: Hold task ref during TMF timeout handling

    For aborts, qedi needs to cleanup the FW then send the TMF from a worker
    thread. While it's doing these the cmd could complete normally and the TMF
    could time out. libiscsi would then complete the iscsi_task which will call
    into the driver to cleanup the driver level resources while it still might
    be accessing them for the cleanup/abort.
    
    This has iscsi_eh_abort keep the iscsi_task ref if the TMF times out, so
    qedi does not have to worry about if the task is being freed while in use
    and does not need to get its own ref.
    
    Link: https://lore.kernel.org/r/20210525181821.7617-18-michael.christie@oracle.com
    Reviewed-by: Lee Duncan <lduncan@suse.com>
    Signed-off-by: Mike Christie <michael.christie@oracle.com>
    Signed-off-by: Martin K. Petersen <martin.petersen@oracle.com>
    mikechristie authored and martinkpetersen committed Jun 2, 2021
  14. scsi: iscsi: Flush block work before unblock

    We set the max_active iSCSI EH works to 1, so all work is going to execute
    in order by default. However, userspace can now override this in sysfs. If
    max_active > 1, we can end up with the block_work on CPU1 and
    iscsi_unblock_session running the unblock_work on CPU2 and the session and
    target/device state will end up out of sync with each other.
    
    This adds a flush of the block_work in iscsi_unblock_session.
    
    Link: https://lore.kernel.org/r/20210525181821.7617-17-michael.christie@oracle.com
    Fixes: 1d726aa ("scsi: iscsi: Optimize work queue flush use")
    Reviewed-by: Lee Duncan <lduncan@suse.com>
    Signed-off-by: Mike Christie <michael.christie@oracle.com>
    Signed-off-by: Martin K. Petersen <martin.petersen@oracle.com>
    mikechristie authored and martinkpetersen committed Jun 2, 2021
  15. scsi: iscsi: Fix completion check during abort races

    We have a ref to the task being aborted, so SCp.ptr will never be NULL. We
    need to use iscsi_task_is_completed to check for the completed state.
    
    Link: https://lore.kernel.org/r/20210525181821.7617-16-michael.christie@oracle.com
    Reviewed-by: Lee Duncan <lduncan@suse.com>
    Signed-off-by: Mike Christie <michael.christie@oracle.com>
    Signed-off-by: Martin K. Petersen <martin.petersen@oracle.com>
    mikechristie authored and martinkpetersen committed Jun 2, 2021
  16. scsi: iscsi: Fix shost->max_id use

    The iscsi offload drivers are setting the shost->max_id to the max number
    of sessions they support. The problem is that max_id is not the max number
    of targets but the highest identifier the targets can have. To use it to
    limit the number of targets we need to set it to max sessions - 1, or we
    can end up with a session we might not have preallocated resources for.
    
    Link: https://lore.kernel.org/r/20210525181821.7617-15-michael.christie@oracle.com
    Reviewed-by: Lee Duncan <lduncan@suse.com>
    Signed-off-by: Mike Christie <michael.christie@oracle.com>
    Signed-off-by: Martin K. Petersen <martin.petersen@oracle.com>
    mikechristie authored and martinkpetersen committed Jun 2, 2021
  17. scsi: iscsi: Fix conn use after free during resets

    If we haven't done a unbind target call we can race where
    iscsi_conn_teardown wakes up the EH thread and then frees the conn while
    those threads are still accessing the conn ehwait.
    
    We can only do one TMF per session so this just moves the TMF fields from
    the conn to the session. We can then rely on the
    iscsi_session_teardown->iscsi_remove_session->__iscsi_unbind_session call
    to remove the target and it's devices, and know after that point there is
    no device or scsi-ml callout trying to access the session.
    
    Link: https://lore.kernel.org/r/20210525181821.7617-14-michael.christie@oracle.com
    Reviewed-by: Lee Duncan <lduncan@suse.com>
    Signed-off-by: Mike Christie <michael.christie@oracle.com>
    Signed-off-by: Martin K. Petersen <martin.petersen@oracle.com>
    mikechristie authored and martinkpetersen committed Jun 2, 2021
  18. scsi: iscsi: Get ref to conn during reset handling

    The comment in iscsi_eh_session_reset is wrong and we don't wait for the
    EH to complete before tearing down the conn. This has us get a ref to the
    conn when we are not holding the eh_mutex/frwd_lock so it does not get
    freed from under us.
    
    Link: https://lore.kernel.org/r/20210525181821.7617-13-michael.christie@oracle.com
    Reviewed-by: Lee Duncan <lduncan@suse.com>
    Signed-off-by: Mike Christie <michael.christie@oracle.com>
    Signed-off-by: Martin K. Petersen <martin.petersen@oracle.com>
    mikechristie authored and martinkpetersen committed Jun 2, 2021
  19. scsi: iscsi: Have abort handler get ref to conn

    If SCSI midlayer is aborting a task when we are tearing down the conn we
    could free the conn while the abort thread is accessing the conn. This has
    the abort handler get a ref to the conn so it won't be freed from under it.
    
    Note: this is not needed for device/target reset because we are holding the
    eh_mutex when accessing the conn.
    
    Link: https://lore.kernel.org/r/20210525181821.7617-12-michael.christie@oracle.com
    Reviewed-by: Lee Duncan <lduncan@suse.com>
    Signed-off-by: Mike Christie <michael.christie@oracle.com>
    Signed-off-by: Martin K. Petersen <martin.petersen@oracle.com>
    mikechristie authored and martinkpetersen committed Jun 2, 2021
  20. scsi: iscsi: Add iscsi_cls_conn refcount helpers

    There are a couple places where we could free the iscsi_cls_conn while it's
    still in use. This adds some helpers to get/put a refcount on the struct
    and converts an exiting user. Subsequent commits will then use the helpers
    to fix 2 bugs in the eh code.
    
    Link: https://lore.kernel.org/r/20210525181821.7617-11-michael.christie@oracle.com
    Reviewed-by: Lee Duncan <lduncan@suse.com>
    Signed-off-by: Mike Christie <michael.christie@oracle.com>
    Signed-off-by: Martin K. Petersen <martin.petersen@oracle.com>
    mikechristie authored and martinkpetersen committed Jun 2, 2021
  21. scsi: iscsi: iscsi_tcp: Start socket shutdown during conn stop

    Make sure the conn socket shutdown starts before we start the timer to fail
    commands to upper layers.
    
    Link: https://lore.kernel.org/r/20210525181821.7617-10-michael.christie@oracle.com
    Reviewed-by: Lee Duncan <lduncan@suse.com>
    Signed-off-by: Mike Christie <michael.christie@oracle.com>
    Signed-off-by: Martin K. Petersen <martin.petersen@oracle.com>
    mikechristie authored and martinkpetersen committed Jun 2, 2021
  22. scsi: iscsi: iscsi_tcp: Set no linger

    Userspace (open-iscsi based tools at least) sets no linger on the socket to
    prevent stale data from being sent. However, with the in-kernel cleanup if
    userspace is not up the sockfd_put will release the socket without having
    set that sockopt.
    
    iscsid sets that opt at socket close time, but it seems ok to set this at
    setup time in the kernel for all tools.
    
    Link: https://lore.kernel.org/r/20210525181821.7617-9-michael.christie@oracle.com
    Reviewed-by: Lee Duncan <lduncan@suse.com>
    Signed-off-by: Mike Christie <michael.christie@oracle.com>
    Signed-off-by: Martin K. Petersen <martin.petersen@oracle.com>
    mikechristie authored and martinkpetersen committed Jun 2, 2021
  23. scsi: iscsi: Fix in-kernel conn failure handling

    Commit 0ab7104 ("scsi: iscsi: Perform connection failure entirely in
    kernel space") has the following regressions/bugs that this patch fixes:
    
    1. It can return cmds to upper layers like dm-multipath where that can
    retry them. After they are successful the fs/app can send new I/O to the
    same sectors, but we've left the cmds running in FW or in the net layer.
    We need to be calling ep_disconnect if userspace is not up.
    
    This patch only fixes the issue for offload drivers. iscsi_tcp will be
    fixed in separate commit because it doesn't have a ep_disconnect call.
    
    2. The drivers that implement ep_disconnect expect that it's called before
    conn_stop. Besides crashes, if the cleanup_task callout is called before
    ep_disconnect it might free up driver/card resources for session1 then they
    could be allocated for session2. But because the driver's ep_disconnect is
    not called it has not cleaned up the firmware so the card is still using
    the resources for the original cmd.
    
    3. The stop_conn_work_fn can run after userspace has done its recovery and
    we are happily using the session. We will then end up with various bugs
    depending on what is going on at the time.
    
    We may also run stop_conn_work_fn late after userspace has called stop_conn
    and ep_disconnect and is now going to call start/bind conn. If
    stop_conn_work_fn runs after bind but before start, we would leave the conn
    in a unbound but sort of started state where IO might be allowed even
    though the drivers have been set in a state where they no longer expect
    I/O.
    
    4. Returning -EAGAIN in iscsi_if_destroy_conn if we haven't yet run the in
    kernel stop_conn function is breaking userspace. We should have been doing
    this for the caller.
    
    Link: https://lore.kernel.org/r/20210525181821.7617-8-michael.christie@oracle.com
    Fixes: 0ab7104 ("scsi: iscsi: Perform connection failure entirely in kernel space")
    Reviewed-by: Lee Duncan <lduncan@suse.com>
    Signed-off-by: Mike Christie <michael.christie@oracle.com>
    Signed-off-by: Martin K. Petersen <martin.petersen@oracle.com>
    mikechristie authored and martinkpetersen committed Jun 2, 2021
  24. scsi: iscsi: Rel ref after iscsi_lookup_endpoint()

    Subsequent commits allow the kernel to do ep_disconnect. In that case we
    will have to get a proper refcount on the ep so one thread does not delete
    it from under another.
    
    Link: https://lore.kernel.org/r/20210525181821.7617-7-michael.christie@oracle.com
    Reviewed-by: Lee Duncan <lduncan@suse.com>
    Signed-off-by: Mike Christie <michael.christie@oracle.com>
    Signed-off-by: Martin K. Petersen <martin.petersen@oracle.com>
    mikechristie authored and martinkpetersen committed Jun 2, 2021
  25. scsi: iscsi: Use system_unbound_wq for destroy_work

    Use the system_unbound_wq for async session destruction. We don't need a
    dedicated workqueue for async session destruction because:
    
     1. perf does not seem to be an issue since we only allow 1 active work.
    
     2. it does not have deps with other system works and we can run them in
        parallel with each other.
    
    Link: https://lore.kernel.org/r/20210525181821.7617-6-michael.christie@oracle.com
    Reviewed-by: Lee Duncan <lduncan@suse.com>
    Signed-off-by: Mike Christie <michael.christie@oracle.com>
    Signed-off-by: Martin K. Petersen <martin.petersen@oracle.com>
    mikechristie authored and martinkpetersen committed Jun 2, 2021
  26. scsi: iscsi: Force immediate failure during shutdown

    If the system is not up, we can just fail immediately since iscsid is not
    going to ever answer our netlink events. We are already setting the
    recovery_tmo to 0, but by passing stop_conn STOP_CONN_TERM we never will
    block the session and start the recovery timer, because for that flag
    userspace will do the unbind and destroy events which would remove the
    devices and wake up and kill the eh.
    
    Since the conn is dead and the system is going dowm this just has us use
    STOP_CONN_RECOVER with recovery_tmo=0 so we fail immediately. However, if
    the user has set the recovery_tmo=-1 we let the system hang like they
    requested since they might have used that setting for specific reasons
    (one known reason is for buggy cluster software).
    
    Link: https://lore.kernel.org/r/20210525181821.7617-5-michael.christie@oracle.com
    Signed-off-by: Mike Christie <michael.christie@oracle.com>
    Signed-off-by: Martin K. Petersen <martin.petersen@oracle.com>
    mikechristie authored and martinkpetersen committed Jun 2, 2021
  27. scsi: iscsi: Drop suspend calls from ep_disconnect

    libiscsi will now suspend the send/tx queue for the drivers so we can drop
    it from the drivers ep_disconnect.
    
    Link: https://lore.kernel.org/r/20210525181821.7617-4-michael.christie@oracle.com
    Reviewed-by: Lee Duncan <lduncan@suse.com>
    Signed-off-by: Mike Christie <michael.christie@oracle.com>
    Signed-off-by: Martin K. Petersen <martin.petersen@oracle.com>
    mikechristie authored and martinkpetersen committed Jun 2, 2021
  28. scsi: iscsi: Stop queueing during ep_disconnect

    During ep_disconnect we have been doing iscsi_suspend_tx/queue to block new
    I/O but every driver except cxgbi and iscsi_tcp can still get I/O from
    __iscsi_conn_send_pdu() if we haven't called iscsi_conn_failure() before
    ep_disconnect. This could happen if we were terminating the session, and
    the logout timed out before it was even sent to libiscsi.
    
    Fix the issue by adding a helper which reverses the bind_conn call that
    allows new I/O to be queued. Drivers implementing ep_disconnect can use this
    to make sure new I/O is not queued to them when handling the disconnect.
    
    Link: https://lore.kernel.org/r/20210525181821.7617-3-michael.christie@oracle.com
    Reviewed-by: Lee Duncan <lduncan@suse.com>
    Signed-off-by: Mike Christie <michael.christie@oracle.com>
    Signed-off-by: Martin K. Petersen <martin.petersen@oracle.com>
    mikechristie authored and martinkpetersen committed Jun 2, 2021
Older