lkml.org 
[lkml]   [2021]   [Jul]   [12]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    Patch in this message
    /
    From
    Subject[PATCH 5.13 667/800] scsi: iscsi: Flush block work before unblock
    Date
    From: Mike Christie <michael.christie@oracle.com>

    [ Upstream commit 7ce9fc5ecde0d8bd64c29baee6c5e3ce7074ec9a ]

    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: 1d726aa6ef57 ("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>
    Signed-off-by: Sasha Levin <sashal@kernel.org>
    ---
    drivers/scsi/scsi_transport_iscsi.c | 2 ++
    1 file changed, 2 insertions(+)

    diff --git a/drivers/scsi/scsi_transport_iscsi.c b/drivers/scsi/scsi_transport_iscsi.c
    index b8a93e607891..6ce1cc992d1d 100644
    --- a/drivers/scsi/scsi_transport_iscsi.c
    +++ b/drivers/scsi/scsi_transport_iscsi.c
    @@ -1969,6 +1969,8 @@ static void __iscsi_unblock_session(struct work_struct *work)
    */
    void iscsi_unblock_session(struct iscsi_cls_session *session)
    {
    + flush_work(&session->block_work);
    +
    queue_work(iscsi_eh_timer_workq, &session->unblock_work);
    /*
    * Blocking the session can be done from any context so we only
    --
    2.30.2


    \
     
     \ /
      Last update: 2021-07-12 11:10    [W:2.114 / U:0.144 seconds]
    ©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site