scsi: aacraid: Do not remove offlined devices
authorRaghava Aditya Renukunta <RaghavaAditya.Renukunta@microsemi.com>
Wed, 27 Dec 2017 04:34:25 +0000 (20:34 -0800)
committerMartin K. Petersen <martin.petersen@oracle.com>
Thu, 4 Jan 2018 04:26:41 +0000 (23:26 -0500)
As part of the recovery process, the drivers removes offline devices (
done by the kernel) and then tries to add them back in the rescan code.
Removing the device is like taking a sledgehammer to a nail.

Set the device as running if it is marked offline.

Signed-off-by: Raghava Aditya Renukunta <RaghavaAditya.Renukunta@microsemi.com>
Signed-off-by: Martin K. Petersen <martin.petersen@oracle.com>
drivers/scsi/aacraid/commsup.c

index ffbfd04..32b8bdb 100644 (file)
@@ -1658,14 +1658,12 @@ static int _aac_reset_adapter(struct aac_dev *aac, int forced, u8 reset_type)
                command->scsi_done(command);
        }
        /*
-        * Any Device that was already marked offline needs to be cleaned up
+        * Any Device that was already marked offline needs to be marked
+        * running
         */
        __shost_for_each_device(dev, host) {
-               if (!scsi_device_online(dev)) {
-                       sdev_printk(KERN_INFO, dev, "Removing offline device\n");
-                       scsi_remove_device(dev);
-                       scsi_device_put(dev);
-               }
+               if (!scsi_device_online(dev))
+                       scsi_device_set_state(dev, SDEV_RUNNING);
        }
        retval = 0;