[SCSI] mptfusion: Proper error handling is added after mpt_config timeout

Added proper error handling after mpt_config.
Now check of MPI_IOCSTATUS_CONFIG_INVALID_PAGE is added.
If error is MPI_IOCSTATUS_CONFIG_INVALID_PAGE, driver will return -ENODEV.

Signed-off-by: Kashyap Desai <kashyap.desai@lsi.com>
Signed-off-by: James Bottomley <James.Bottomley@suse.de>
This commit is contained in:
Kashyap, Desai 2010-03-18 19:24:57 +05:30 коммит произвёл James Bottomley
Родитель f18a8927f6
Коммит 0cf0f23c28
1 изменённых файлов: 11 добавлений и 5 удалений

Просмотреть файл

@ -2523,6 +2523,12 @@ mptsas_sas_device_pg0(MPT_ADAPTER *ioc, struct mptsas_devinfo *device_info,
cfg.action = MPI_CONFIG_ACTION_PAGE_READ_CURRENT; cfg.action = MPI_CONFIG_ACTION_PAGE_READ_CURRENT;
error = mpt_config(ioc, &cfg); error = mpt_config(ioc, &cfg);
if (error == MPI_IOCSTATUS_CONFIG_INVALID_PAGE) {
error = -ENODEV;
goto out_free_consistent;
}
if (error) if (error)
goto out_free_consistent; goto out_free_consistent;
@ -2599,14 +2605,14 @@ mptsas_sas_expander_pg0(MPT_ADAPTER *ioc, struct mptsas_portinfo *port_info,
cfg.action = MPI_CONFIG_ACTION_PAGE_READ_CURRENT; cfg.action = MPI_CONFIG_ACTION_PAGE_READ_CURRENT;
error = mpt_config(ioc, &cfg); error = mpt_config(ioc, &cfg);
if (error) if (error == MPI_IOCSTATUS_CONFIG_INVALID_PAGE) {
goto out_free_consistent;
if (!buffer->NumPhys) {
error = -ENODEV; error = -ENODEV;
goto out_free_consistent; goto out_free_consistent;
} }
if (error)
goto out_free_consistent;
/* save config data */ /* save config data */
port_info->num_phys = (buffer->NumPhys) ? buffer->NumPhys : 1; port_info->num_phys = (buffer->NumPhys) ? buffer->NumPhys : 1;
port_info->phy_info = kcalloc(port_info->num_phys, port_info->phy_info = kcalloc(port_info->num_phys,
@ -2682,7 +2688,7 @@ mptsas_sas_expander_pg1(MPT_ADAPTER *ioc, struct mptsas_phyinfo *phy_info,
if (error == MPI_IOCSTATUS_CONFIG_INVALID_PAGE) { if (error == MPI_IOCSTATUS_CONFIG_INVALID_PAGE) {
error = -ENODEV; error = -ENODEV;
goto out; goto out_free_consistent;
} }
if (error) if (error)