scsi: aacraid: check adapter health
authorBalsundar P <balsundar.p@microsemi.com>
Tue, 15 Oct 2019 06:22:02 +0000 (11:52 +0530)
committerMartin K. Petersen <martin.petersen@oracle.com>
Fri, 18 Oct 2019 23:34:18 +0000 (19:34 -0400)
Currently driver waits for the command IOCTL from the firmware and if the
firmware enters nonresponsive state, the driver doesn't respond till the
firmware is responsive again.

Check that firmware is alive, otherwise return -EBUSY.

[mkp: clarified commit desc]

Link: https://lore.kernel.org/r/1571120524-6037-6-git-send-email-balsundar.p@microsemi.com
Signed-off-by: Balsundar P <balsundar.p@microsemi.com>
Signed-off-by: Martin K. Petersen <martin.petersen@oracle.com>
drivers/scsi/aacraid/linit.c

index 40f7850..55a55c5 100644 (file)
@@ -612,9 +612,13 @@ static struct device_attribute *aac_dev_attrs[] = {
 static int aac_ioctl(struct scsi_device *sdev, unsigned int cmd,
                     void __user *arg)
 {
+       int retval;
        struct aac_dev *dev = (struct aac_dev *)sdev->host->hostdata;
        if (!capable(CAP_SYS_RAWIO))
                return -EPERM;
+       retval = aac_adapter_check_health(dev);
+       if (retval)
+               return -EBUSY;
        return aac_do_ioctl(dev, cmd, arg);
 }