diff options
| -rw-r--r-- | drivers/scsi/ipr.c | 6 | ||||
| -rw-r--r-- | drivers/scsi/ipr.h | 1 |
2 files changed, 4 insertions, 3 deletions
diff --git a/drivers/scsi/ipr.c b/drivers/scsi/ipr.c index 5890e5f92d82..154b78c5baa8 100644 --- a/drivers/scsi/ipr.c +++ b/drivers/scsi/ipr.c | |||
| @@ -869,8 +869,8 @@ static void ipr_handle_config_change(struct ipr_ioa_cfg *ioa_cfg, | |||
| 869 | 869 | ||
| 870 | if (hostrcb->hcam.notify_type == IPR_HOST_RCB_NOTIF_TYPE_REM_ENTRY) { | 870 | if (hostrcb->hcam.notify_type == IPR_HOST_RCB_NOTIF_TYPE_REM_ENTRY) { |
| 871 | if (res->sdev) { | 871 | if (res->sdev) { |
| 872 | res->sdev->hostdata = NULL; | ||
| 873 | res->del_from_ml = 1; | 872 | res->del_from_ml = 1; |
| 873 | res->cfgte.res_handle = IPR_INVALID_RES_HANDLE; | ||
| 874 | if (ioa_cfg->allow_ml_add_del) | 874 | if (ioa_cfg->allow_ml_add_del) |
| 875 | schedule_work(&ioa_cfg->work_q); | 875 | schedule_work(&ioa_cfg->work_q); |
| 876 | } else | 876 | } else |
| @@ -2107,7 +2107,6 @@ restart: | |||
| 2107 | did_work = 1; | 2107 | did_work = 1; |
| 2108 | sdev = res->sdev; | 2108 | sdev = res->sdev; |
| 2109 | if (!scsi_device_get(sdev)) { | 2109 | if (!scsi_device_get(sdev)) { |
| 2110 | res->sdev = NULL; | ||
| 2111 | list_move_tail(&res->queue, &ioa_cfg->free_res_q); | 2110 | list_move_tail(&res->queue, &ioa_cfg->free_res_q); |
| 2112 | spin_unlock_irqrestore(ioa_cfg->host->host_lock, lock_flags); | 2111 | spin_unlock_irqrestore(ioa_cfg->host->host_lock, lock_flags); |
| 2113 | scsi_remove_device(sdev); | 2112 | scsi_remove_device(sdev); |
| @@ -2124,6 +2123,7 @@ restart: | |||
| 2124 | bus = res->cfgte.res_addr.bus; | 2123 | bus = res->cfgte.res_addr.bus; |
| 2125 | target = res->cfgte.res_addr.target; | 2124 | target = res->cfgte.res_addr.target; |
| 2126 | lun = res->cfgte.res_addr.lun; | 2125 | lun = res->cfgte.res_addr.lun; |
| 2126 | res->add_to_ml = 0; | ||
| 2127 | spin_unlock_irqrestore(ioa_cfg->host->host_lock, lock_flags); | 2127 | spin_unlock_irqrestore(ioa_cfg->host->host_lock, lock_flags); |
| 2128 | scsi_add_device(ioa_cfg->host, bus, target, lun); | 2128 | scsi_add_device(ioa_cfg->host, bus, target, lun); |
| 2129 | spin_lock_irqsave(ioa_cfg->host->host_lock, lock_flags); | 2129 | spin_lock_irqsave(ioa_cfg->host->host_lock, lock_flags); |
| @@ -4980,7 +4980,7 @@ static int ipr_init_res_table(struct ipr_cmnd *ipr_cmd) | |||
| 4980 | list_for_each_entry_safe(res, temp, &old_res, queue) { | 4980 | list_for_each_entry_safe(res, temp, &old_res, queue) { |
| 4981 | if (res->sdev) { | 4981 | if (res->sdev) { |
| 4982 | res->del_from_ml = 1; | 4982 | res->del_from_ml = 1; |
| 4983 | res->sdev->hostdata = NULL; | 4983 | res->cfgte.res_handle = IPR_INVALID_RES_HANDLE; |
| 4984 | list_move_tail(&res->queue, &ioa_cfg->used_res_q); | 4984 | list_move_tail(&res->queue, &ioa_cfg->used_res_q); |
| 4985 | } else { | 4985 | } else { |
| 4986 | list_move_tail(&res->queue, &ioa_cfg->free_res_q); | 4986 | list_move_tail(&res->queue, &ioa_cfg->free_res_q); |
diff --git a/drivers/scsi/ipr.h b/drivers/scsi/ipr.h index fd360bfe56dd..ee9169d817b1 100644 --- a/drivers/scsi/ipr.h +++ b/drivers/scsi/ipr.h | |||
| @@ -133,6 +133,7 @@ | |||
| 133 | #define IPR_MAX_SCSI_RATE(width) ((320 * 10) / ((width) / 8)) | 133 | #define IPR_MAX_SCSI_RATE(width) ((320 * 10) / ((width) / 8)) |
| 134 | 134 | ||
| 135 | #define IPR_IOA_RES_HANDLE 0xffffffff | 135 | #define IPR_IOA_RES_HANDLE 0xffffffff |
| 136 | #define IPR_INVALID_RES_HANDLE 0 | ||
| 136 | #define IPR_IOA_RES_ADDR 0x00ffffff | 137 | #define IPR_IOA_RES_ADDR 0x00ffffff |
| 137 | 138 | ||
| 138 | /* | 139 | /* |
