Patch "scsi: smartpqi: revert propagate-the-multipath-failure-to-SML-quickly" has been added to the 6.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: smartpqi: revert propagate-the-multipath-failure-to-SML-quickly

to the 6.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-smartpqi-revert-propagate-the-multipath-failure.patch
and it can be found in the queue-6.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 0995df8e7db6357d06cbfca01f0f44bbeb7623bd
Author: Gilbert Wu <Gilbert.Wu@xxxxxxxxxxxxx>
Date:   Thu Jul 11 14:47:02 2024 -0500

    scsi: smartpqi: revert propagate-the-multipath-failure-to-SML-quickly
    
    [ Upstream commit f1393d52e6cda9c20f12643cbecf1e1dc357e0e2 ]
    
    Correct a rare multipath failure issue by reverting commit 94a68c814328
    ("scsi: smartpqi: Quickly propagate path failures to SCSI midlayer") [1].
    
    Reason for revert: The patch propagated the path failure to SML quickly
    when one of the path fails during IO and AIO path gets disabled for a
    multipath device.
    
    But it created a new issue: when creating a volume on an encryption-enabled
    controller, the firmware reports the AIO path is disabled, which cause the
    driver to report a path failure to SML for a multipath device.
    
    There will be a new fix to handle "Illegal request" and "Invalid field in
    parameter list" on RAID path when the AIO path is disabled on a multipath
    device.
    
    [1] https://lore.kernel.org/all/164375209313.440833.9992416628621839233.stgit@xxxxxxxxxxxxxxxxxx/
    
    Fixes: 94a68c814328 ("scsi: smartpqi: Quickly propagate path failures to SCSI midlayer")
    Reviewed-by: Scott Benesh <scott.benesh@xxxxxxxxxxxxx>
    Reviewed-by: Scott Teel <scott.teel@xxxxxxxxxxxxx>
    Reviewed-by: Mike McGowen <mike.mcgowen@xxxxxxxxxxxxx>
    Signed-off-by: Gilbert Wu <Gilbert.Wu@xxxxxxxxxxxxx>
    Signed-off-by: Don Brace <don.brace@xxxxxxxxxxxxx>
    Link: https://lore.kernel.org/r/20240711194704.982400-4-don.brace@xxxxxxxxxxxxx
    Signed-off-by: Martin K. Petersen <martin.petersen@xxxxxxxxxx>
    Signed-off-by: Sasha Levin <sashal@xxxxxxxxxx>

diff --git a/drivers/scsi/smartpqi/smartpqi_init.c b/drivers/scsi/smartpqi/smartpqi_init.c
index 24c7cb285dca0..c1524fb334eb5 100644
--- a/drivers/scsi/smartpqi/smartpqi_init.c
+++ b/drivers/scsi/smartpqi/smartpqi_init.c
@@ -2354,14 +2354,6 @@ static inline void pqi_mask_device(u8 *scsi3addr)
 	scsi3addr[3] |= 0xc0;
 }
 
-static inline bool pqi_is_multipath_device(struct pqi_scsi_dev *device)
-{
-	if (pqi_is_logical_device(device))
-		return false;
-
-	return (device->path_map & (device->path_map - 1)) != 0;
-}
-
 static inline bool pqi_expose_device(struct pqi_scsi_dev *device)
 {
 	return !device->is_physical_device || !pqi_skip_device(device->scsi3addr);
@@ -3258,14 +3250,12 @@ static void pqi_process_aio_io_error(struct pqi_io_request *io_request)
 	int residual_count;
 	int xfer_count;
 	bool device_offline;
-	struct pqi_scsi_dev *device;
 
 	scmd = io_request->scmd;
 	error_info = io_request->error_info;
 	host_byte = DID_OK;
 	sense_data_length = 0;
 	device_offline = false;
-	device = scmd->device->hostdata;
 
 	switch (error_info->service_response) {
 	case PQI_AIO_SERV_RESPONSE_COMPLETE:
@@ -3290,14 +3280,8 @@ static void pqi_process_aio_io_error(struct pqi_io_request *io_request)
 			break;
 		case PQI_AIO_STATUS_AIO_PATH_DISABLED:
 			pqi_aio_path_disabled(io_request);
-			if (pqi_is_multipath_device(device)) {
-				pqi_device_remove_start(device);
-				host_byte = DID_NO_CONNECT;
-				scsi_status = SAM_STAT_CHECK_CONDITION;
-			} else {
-				scsi_status = SAM_STAT_GOOD;
-				io_request->status = -EAGAIN;
-			}
+			scsi_status = SAM_STAT_GOOD;
+			io_request->status = -EAGAIN;
 			break;
 		case PQI_AIO_STATUS_NO_PATH_TO_DEVICE:
 		case PQI_AIO_STATUS_INVALID_DEVICE:




[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