@@ -189,6 +189,10 @@ module_param_named(ctrl_ready_timeout,
MODULE_PARM_DESC(ctrl_ready_timeout,
"Timeout in seconds for driver to wait for controller ready.");
+static bool pqi_lun_eh;
+module_param_named(lun_eh, pqi_lun_eh, bool, 0444);
+MODULE_PARM_DESC(lun_eh, "LUN based error handle (def=0)");
+
static char *raid_levels[] = {
"RAID-0",
"RAID-4",
@@ -6496,6 +6500,13 @@ static int pqi_sdev_init(struct scsi_device *sdev)
struct pqi_ctrl_info *ctrl_info;
struct scsi_target *starget;
struct sas_rphy *rphy;
+ int ret = 0;
+
+ if (pqi_lun_eh) {
+ ret = scsi_device_setup_eh(sdev, 0);
+ if (ret)
+ return ret;
+ }
ctrl_info = shost_to_hba(sdev->host);
@@ -6583,6 +6594,9 @@ static void pqi_sdev_destroy(struct scsi_device *sdev)
ctrl_info = shost_to_hba(sdev->host);
+ if (pqi_lun_eh)
+ scsi_device_clear_eh(sdev);
+
mutex_acquired = mutex_trylock(&ctrl_info->scan_mutex);
if (!mutex_acquired)
return;