Patch "scsi: core: Always send batch on reset or error handling command" has been added to the 5.10-stable tree

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



This is a note to let you know that I've just added the patch titled

    scsi: core: Always send batch on reset or error handling command

to the 5.10-stable tree which can be found at:
    http://www.kernel.org/git/?p=linux/kernel/git/stable/stable-queue.git;a=summary

The filename of the patch is:
     scsi-core-always-send-batch-on-reset-or-error-handli.patch
and it can be found in the queue-5.10 subdirectory.

If you, or anyone else, feels it should not be added to the stable tree,
please let <stable@xxxxxxxxxxxxxxx> know about it.



commit 549390501ff6606dd2906726b60fafdb1f3e7f51
Author: Alexander Atanasov <alexander.atanasov@xxxxxxxxxxxxx>
Date:   Fri Dec 15 14:10:08 2023 +0200

    scsi: core: Always send batch on reset or error handling command
    
    [ Upstream commit 066c5b46b6eaf2f13f80c19500dbb3b84baabb33 ]
    
    In commit 8930a6c20791 ("scsi: core: add support for request batching") the
    block layer bd->last flag was mapped to SCMD_LAST and used as an indicator
    to send the batch for the drivers that implement this feature. However, the
    error handling code was not updated accordingly.
    
    scsi_send_eh_cmnd() is used to send error handling commands and request
    sense. The problem is that request sense comes as a single command that
    gets into the batch queue and times out. As a result the device goes
    offline after several failed resets. This was observed on virtio_scsi
    during a device resize operation.
    
    [  496.316946] sd 0:0:4:0: [sdd] tag#117 scsi_eh_0: requesting sense
    [  506.786356] sd 0:0:4:0: [sdd] tag#117 scsi_send_eh_cmnd timeleft: 0
    [  506.787981] sd 0:0:4:0: [sdd] tag#117 abort
    
    To fix this always set SCMD_LAST flag in scsi_send_eh_cmnd() and
    scsi_reset_ioctl().
    
    Fixes: 8930a6c20791 ("scsi: core: add support for request batching")
    Cc: <stable@xxxxxxxxxxxxxxx>
    Signed-off-by: Alexander Atanasov <alexander.atanasov@xxxxxxxxxxxxx>
    Link: https://lore.kernel.org/r/20231215121008.2881653-1-alexander.atanasov@xxxxxxxxxxxxx
    Reviewed-by: Ming Lei <ming.lei@xxxxxxxxxx>
    Signed-off-by: Martin K. Petersen <martin.petersen@xxxxxxxxxx>
    Signed-off-by: Sasha Levin <sashal@xxxxxxxxxx>

diff --git a/drivers/scsi/scsi_error.c b/drivers/scsi/scsi_error.c
index 93374173b9579..30eb8769dbab9 100644
--- a/drivers/scsi/scsi_error.c
+++ b/drivers/scsi/scsi_error.c
@@ -1068,6 +1068,7 @@ static int scsi_send_eh_cmnd(struct scsi_cmnd *scmd, unsigned char *cmnd,
 
 	scsi_log_send(scmd);
 	scmd->submitter = SUBMITTED_BY_SCSI_ERROR_HANDLER;
+	scmd->flags |= SCMD_LAST;
 
 	/*
 	 * Lock sdev->state_mutex to avoid that scsi_device_quiesce() can
@@ -2359,6 +2360,7 @@ scsi_ioctl_reset(struct scsi_device *dev, int __user *arg)
 	scmd->cmnd = scsi_req(rq)->cmd;
 
 	scmd->submitter = SUBMITTED_BY_SCSI_RESET_IOCTL;
+	scmd->flags |= SCMD_LAST;
 	memset(&scmd->sdb, 0, sizeof(scmd->sdb));
 
 	scmd->cmd_len			= 0;




[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Index of Archives]     [Linux USB Devel]     [Linux Audio Users]     [Yosemite News]     [Linux Kernel]     [Linux SCSI]

  Powered by Linux