diff options
| -rw-r--r-- | drivers/s390/scsi/zfcp_aux.c | 6 | ||||
| -rw-r--r-- | drivers/s390/scsi/zfcp_ccw.c | 19 | ||||
| -rw-r--r-- | drivers/s390/scsi/zfcp_dbf.c | 22 | ||||
| -rw-r--r-- | drivers/s390/scsi/zfcp_erp.c | 140 | ||||
| -rw-r--r-- | drivers/s390/scsi/zfcp_ext.h | 60 | ||||
| -rw-r--r-- | drivers/s390/scsi/zfcp_fsf.c | 149 | ||||
| -rw-r--r-- | drivers/s390/scsi/zfcp_qdio.c | 3 | ||||
| -rw-r--r-- | drivers/s390/scsi/zfcp_scsi.c | 4 | ||||
| -rw-r--r-- | drivers/s390/scsi/zfcp_sysfs_adapter.c | 9 | ||||
| -rw-r--r-- | drivers/s390/scsi/zfcp_sysfs_port.c | 8 | ||||
| -rw-r--r-- | drivers/s390/scsi/zfcp_sysfs_unit.c | 4 |
11 files changed, 211 insertions, 213 deletions
diff --git a/drivers/s390/scsi/zfcp_aux.c b/drivers/s390/scsi/zfcp_aux.c index 05a33c247c68..8c7e2b778ef1 100644 --- a/drivers/s390/scsi/zfcp_aux.c +++ b/drivers/s390/scsi/zfcp_aux.c | |||
| @@ -1376,7 +1376,7 @@ static void zfcp_fsf_incoming_els_rscn(struct zfcp_fsf_req *fsf_req) | |||
| 1376 | "port 0x%016Lx\n", port->wwpn); | 1376 | "port 0x%016Lx\n", port->wwpn); |
| 1377 | zfcp_erp_port_reopen(port, | 1377 | zfcp_erp_port_reopen(port, |
| 1378 | ZFCP_STATUS_COMMON_ERP_FAILED, | 1378 | ZFCP_STATUS_COMMON_ERP_FAILED, |
| 1379 | 82, (u64)fsf_req); | 1379 | 82, fsf_req); |
| 1380 | continue; | 1380 | continue; |
| 1381 | } | 1381 | } |
| 1382 | 1382 | ||
| @@ -1429,7 +1429,7 @@ static void zfcp_fsf_incoming_els_plogi(struct zfcp_fsf_req *fsf_req) | |||
| 1429 | status_buffer->d_id, | 1429 | status_buffer->d_id, |
| 1430 | zfcp_get_busid_by_adapter(adapter)); | 1430 | zfcp_get_busid_by_adapter(adapter)); |
| 1431 | } else { | 1431 | } else { |
| 1432 | zfcp_erp_port_forced_reopen(port, 0, 83, (u64)fsf_req); | 1432 | zfcp_erp_port_forced_reopen(port, 0, 83, fsf_req); |
| 1433 | } | 1433 | } |
| 1434 | } | 1434 | } |
| 1435 | 1435 | ||
| @@ -1454,7 +1454,7 @@ static void zfcp_fsf_incoming_els_logo(struct zfcp_fsf_req *fsf_req) | |||
| 1454 | status_buffer->d_id, | 1454 | status_buffer->d_id, |
| 1455 | zfcp_get_busid_by_adapter(adapter)); | 1455 | zfcp_get_busid_by_adapter(adapter)); |
| 1456 | } else { | 1456 | } else { |
| 1457 | zfcp_erp_port_forced_reopen(port, 0, 84, (u64)fsf_req); | 1457 | zfcp_erp_port_forced_reopen(port, 0, 84, fsf_req); |
| 1458 | } | 1458 | } |
| 1459 | } | 1459 | } |
| 1460 | 1460 | ||
diff --git a/drivers/s390/scsi/zfcp_ccw.c b/drivers/s390/scsi/zfcp_ccw.c index db9f538362a6..66d3b88844b0 100644 --- a/drivers/s390/scsi/zfcp_ccw.c +++ b/drivers/s390/scsi/zfcp_ccw.c | |||
| @@ -170,9 +170,10 @@ zfcp_ccw_set_online(struct ccw_device *ccw_device) | |||
| 170 | BUG_ON(!zfcp_reqlist_isempty(adapter)); | 170 | BUG_ON(!zfcp_reqlist_isempty(adapter)); |
| 171 | adapter->req_no = 0; | 171 | adapter->req_no = 0; |
| 172 | 172 | ||
| 173 | zfcp_erp_modify_adapter_status(adapter, 10, 0, | 173 | zfcp_erp_modify_adapter_status(adapter, 10, NULL, |
| 174 | ZFCP_STATUS_COMMON_RUNNING, ZFCP_SET); | 174 | ZFCP_STATUS_COMMON_RUNNING, ZFCP_SET); |
| 175 | zfcp_erp_adapter_reopen(adapter, ZFCP_STATUS_COMMON_ERP_FAILED, 85, 0); | 175 | zfcp_erp_adapter_reopen(adapter, ZFCP_STATUS_COMMON_ERP_FAILED, 85, |
| 176 | NULL); | ||
| 176 | zfcp_erp_wait(adapter); | 177 | zfcp_erp_wait(adapter); |
| 177 | goto out; | 178 | goto out; |
| 178 | 179 | ||
| @@ -197,7 +198,7 @@ zfcp_ccw_set_offline(struct ccw_device *ccw_device) | |||
| 197 | 198 | ||
| 198 | down(&zfcp_data.config_sema); | 199 | down(&zfcp_data.config_sema); |
| 199 | adapter = dev_get_drvdata(&ccw_device->dev); | 200 | adapter = dev_get_drvdata(&ccw_device->dev); |
| 200 | zfcp_erp_adapter_shutdown(adapter, 0, 86, 0); | 201 | zfcp_erp_adapter_shutdown(adapter, 0, 86, NULL); |
| 201 | zfcp_erp_wait(adapter); | 202 | zfcp_erp_wait(adapter); |
| 202 | zfcp_erp_thread_kill(adapter); | 203 | zfcp_erp_thread_kill(adapter); |
| 203 | up(&zfcp_data.config_sema); | 204 | up(&zfcp_data.config_sema); |
| @@ -223,21 +224,21 @@ zfcp_ccw_notify(struct ccw_device *ccw_device, int event) | |||
| 223 | case CIO_GONE: | 224 | case CIO_GONE: |
| 224 | ZFCP_LOG_NORMAL("adapter %s: device gone\n", | 225 | ZFCP_LOG_NORMAL("adapter %s: device gone\n", |
| 225 | zfcp_get_busid_by_adapter(adapter)); | 226 | zfcp_get_busid_by_adapter(adapter)); |
| 226 | zfcp_erp_adapter_shutdown(adapter, 0, 87, 0); | 227 | zfcp_erp_adapter_shutdown(adapter, 0, 87, NULL); |
| 227 | break; | 228 | break; |
| 228 | case CIO_NO_PATH: | 229 | case CIO_NO_PATH: |
| 229 | ZFCP_LOG_NORMAL("adapter %s: no path\n", | 230 | ZFCP_LOG_NORMAL("adapter %s: no path\n", |
| 230 | zfcp_get_busid_by_adapter(adapter)); | 231 | zfcp_get_busid_by_adapter(adapter)); |
| 231 | zfcp_erp_adapter_shutdown(adapter, 0, 88, 0); | 232 | zfcp_erp_adapter_shutdown(adapter, 0, 88, NULL); |
| 232 | break; | 233 | break; |
| 233 | case CIO_OPER: | 234 | case CIO_OPER: |
| 234 | ZFCP_LOG_NORMAL("adapter %s: operational again\n", | 235 | ZFCP_LOG_NORMAL("adapter %s: operational again\n", |
| 235 | zfcp_get_busid_by_adapter(adapter)); | 236 | zfcp_get_busid_by_adapter(adapter)); |
| 236 | zfcp_erp_modify_adapter_status(adapter, 11, 0, | 237 | zfcp_erp_modify_adapter_status(adapter, 11, NULL, |
| 237 | ZFCP_STATUS_COMMON_RUNNING, | 238 | ZFCP_STATUS_COMMON_RUNNING, |
| 238 | ZFCP_SET); | 239 | ZFCP_SET); |
| 239 | zfcp_erp_adapter_reopen(adapter, | 240 | zfcp_erp_adapter_reopen(adapter, ZFCP_STATUS_COMMON_ERP_FAILED, |
| 240 | ZFCP_STATUS_COMMON_ERP_FAILED, 89, 0); | 241 | 89, NULL); |
| 241 | break; | 242 | break; |
| 242 | } | 243 | } |
| 243 | zfcp_erp_wait(adapter); | 244 | zfcp_erp_wait(adapter); |
| @@ -269,7 +270,7 @@ zfcp_ccw_shutdown(struct ccw_device *cdev) | |||
| 269 | 270 | ||
| 270 | down(&zfcp_data.config_sema); | 271 | down(&zfcp_data.config_sema); |
| 271 | adapter = dev_get_drvdata(&cdev->dev); | 272 | adapter = dev_get_drvdata(&cdev->dev); |
| 272 | zfcp_erp_adapter_shutdown(adapter, 0, 90, 0); | 273 | zfcp_erp_adapter_shutdown(adapter, 0, 90, NULL); |
| 273 | zfcp_erp_wait(adapter); | 274 | zfcp_erp_wait(adapter); |
| 274 | up(&zfcp_data.config_sema); | 275 | up(&zfcp_data.config_sema); |
| 275 | } | 276 | } |
diff --git a/drivers/s390/scsi/zfcp_dbf.c b/drivers/s390/scsi/zfcp_dbf.c index c34a874482a5..37b85c67b11d 100644 --- a/drivers/s390/scsi/zfcp_dbf.c +++ b/drivers/s390/scsi/zfcp_dbf.c | |||
| @@ -700,7 +700,7 @@ void zfcp_rec_dbf_event_thread(u8 id2, struct zfcp_adapter *adapter, int lock) | |||
| 700 | spin_unlock_irqrestore(&adapter->rec_dbf_lock, flags); | 700 | spin_unlock_irqrestore(&adapter->rec_dbf_lock, flags); |
| 701 | } | 701 | } |
| 702 | 702 | ||
| 703 | static void zfcp_rec_dbf_event_target(u8 id2, u64 ref, | 703 | static void zfcp_rec_dbf_event_target(u8 id2, void *ref, |
| 704 | struct zfcp_adapter *adapter, | 704 | struct zfcp_adapter *adapter, |
| 705 | atomic_t *status, atomic_t *erp_count, | 705 | atomic_t *status, atomic_t *erp_count, |
| 706 | u64 wwpn, u32 d_id, u64 fcp_lun) | 706 | u64 wwpn, u32 d_id, u64 fcp_lun) |
| @@ -712,7 +712,7 @@ static void zfcp_rec_dbf_event_target(u8 id2, u64 ref, | |||
| 712 | memset(r, 0, sizeof(*r)); | 712 | memset(r, 0, sizeof(*r)); |
| 713 | r->id = ZFCP_REC_DBF_ID_TARGET; | 713 | r->id = ZFCP_REC_DBF_ID_TARGET; |
| 714 | r->id2 = id2; | 714 | r->id2 = id2; |
| 715 | r->u.target.ref = ref; | 715 | r->u.target.ref = (unsigned long)ref; |
| 716 | r->u.target.status = atomic_read(status); | 716 | r->u.target.status = atomic_read(status); |
| 717 | r->u.target.wwpn = wwpn; | 717 | r->u.target.wwpn = wwpn; |
| 718 | r->u.target.d_id = d_id; | 718 | r->u.target.d_id = d_id; |
| @@ -728,7 +728,7 @@ static void zfcp_rec_dbf_event_target(u8 id2, u64 ref, | |||
| 728 | * @ref: additional reference (e.g. request) | 728 | * @ref: additional reference (e.g. request) |
| 729 | * @adapter: adapter | 729 | * @adapter: adapter |
| 730 | */ | 730 | */ |
| 731 | void zfcp_rec_dbf_event_adapter(u8 id, u64 ref, struct zfcp_adapter *adapter) | 731 | void zfcp_rec_dbf_event_adapter(u8 id, void *ref, struct zfcp_adapter *adapter) |
| 732 | { | 732 | { |
| 733 | zfcp_rec_dbf_event_target(id, ref, adapter, &adapter->status, | 733 | zfcp_rec_dbf_event_target(id, ref, adapter, &adapter->status, |
| 734 | &adapter->erp_counter, 0, 0, 0); | 734 | &adapter->erp_counter, 0, 0, 0); |
| @@ -740,7 +740,7 @@ void zfcp_rec_dbf_event_adapter(u8 id, u64 ref, struct zfcp_adapter *adapter) | |||
| 740 | * @ref: additional reference (e.g. request) | 740 | * @ref: additional reference (e.g. request) |
| 741 | * @port: port | 741 | * @port: port |
| 742 | */ | 742 | */ |
| 743 | void zfcp_rec_dbf_event_port(u8 id, u64 ref, struct zfcp_port *port) | 743 | void zfcp_rec_dbf_event_port(u8 id, void *ref, struct zfcp_port *port) |
| 744 | { | 744 | { |
| 745 | struct zfcp_adapter *adapter = port->adapter; | 745 | struct zfcp_adapter *adapter = port->adapter; |
| 746 | 746 | ||
| @@ -755,7 +755,7 @@ void zfcp_rec_dbf_event_port(u8 id, u64 ref, struct zfcp_port *port) | |||
| 755 | * @ref: additional reference (e.g. request) | 755 | * @ref: additional reference (e.g. request) |
| 756 | * @unit: unit | 756 | * @unit: unit |
| 757 | */ | 757 | */ |
| 758 | void zfcp_rec_dbf_event_unit(u8 id, u64 ref, struct zfcp_unit *unit) | 758 | void zfcp_rec_dbf_event_unit(u8 id, void *ref, struct zfcp_unit *unit) |
| 759 | { | 759 | { |
| 760 | struct zfcp_port *port = unit->port; | 760 | struct zfcp_port *port = unit->port; |
| 761 | struct zfcp_adapter *adapter = port->adapter; | 761 | struct zfcp_adapter *adapter = port->adapter; |
| @@ -776,8 +776,8 @@ void zfcp_rec_dbf_event_unit(u8 id, u64 ref, struct zfcp_unit *unit) | |||
| 776 | * @port: port | 776 | * @port: port |
| 777 | * @unit: unit | 777 | * @unit: unit |
| 778 | */ | 778 | */ |
| 779 | void zfcp_rec_dbf_event_trigger(u8 id2, u64 ref, u8 want, u8 need, u64 action, | 779 | void zfcp_rec_dbf_event_trigger(u8 id2, void *ref, u8 want, u8 need, |
| 780 | struct zfcp_adapter *adapter, | 780 | void *action, struct zfcp_adapter *adapter, |
| 781 | struct zfcp_port *port, struct zfcp_unit *unit) | 781 | struct zfcp_port *port, struct zfcp_unit *unit) |
| 782 | { | 782 | { |
| 783 | struct zfcp_rec_dbf_record *r = &adapter->rec_dbf_buf; | 783 | struct zfcp_rec_dbf_record *r = &adapter->rec_dbf_buf; |
| @@ -787,10 +787,10 @@ void zfcp_rec_dbf_event_trigger(u8 id2, u64 ref, u8 want, u8 need, u64 action, | |||
| 787 | memset(r, 0, sizeof(*r)); | 787 | memset(r, 0, sizeof(*r)); |
| 788 | r->id = ZFCP_REC_DBF_ID_TRIGGER; | 788 | r->id = ZFCP_REC_DBF_ID_TRIGGER; |
| 789 | r->id2 = id2; | 789 | r->id2 = id2; |
| 790 | r->u.trigger.ref = ref; | 790 | r->u.trigger.ref = (unsigned long)ref; |
| 791 | r->u.trigger.want = want; | 791 | r->u.trigger.want = want; |
| 792 | r->u.trigger.need = need; | 792 | r->u.trigger.need = need; |
| 793 | r->u.trigger.action = action; | 793 | r->u.trigger.action = (unsigned long)action; |
| 794 | r->u.trigger.as = atomic_read(&adapter->status); | 794 | r->u.trigger.as = atomic_read(&adapter->status); |
| 795 | if (port) { | 795 | if (port) { |
| 796 | r->u.trigger.ps = atomic_read(&port->status); | 796 | r->u.trigger.ps = atomic_read(&port->status); |
| @@ -819,10 +819,10 @@ void zfcp_rec_dbf_event_action(u8 id2, struct zfcp_erp_action *erp_action) | |||
| 819 | memset(r, 0, sizeof(*r)); | 819 | memset(r, 0, sizeof(*r)); |
| 820 | r->id = ZFCP_REC_DBF_ID_ACTION; | 820 | r->id = ZFCP_REC_DBF_ID_ACTION; |
| 821 | r->id2 = id2; | 821 | r->id2 = id2; |
| 822 | r->u.action.action = (u64)erp_action; | 822 | r->u.action.action = (unsigned long)erp_action; |
| 823 | r->u.action.status = erp_action->status; | 823 | r->u.action.status = erp_action->status; |
| 824 | r->u.action.step = erp_action->step; | 824 | r->u.action.step = erp_action->step; |
| 825 | r->u.action.fsf_req = (u64)erp_action->fsf_req; | 825 | r->u.action.fsf_req = (unsigned long)erp_action->fsf_req; |
| 826 | debug_event(adapter->rec_dbf, 4, r, sizeof(*r)); | 826 | debug_event(adapter->rec_dbf, 4, r, sizeof(*r)); |
| 827 | spin_unlock_irqrestore(&adapter->rec_dbf_lock, flags); | 827 | spin_unlock_irqrestore(&adapter->rec_dbf_lock, flags); |
| 828 | } | 828 | } |
diff --git a/drivers/s390/scsi/zfcp_erp.c b/drivers/s390/scsi/zfcp_erp.c index feb1fda33d25..805484658dd9 100644 --- a/drivers/s390/scsi/zfcp_erp.c +++ b/drivers/s390/scsi/zfcp_erp.c | |||
| @@ -27,15 +27,16 @@ static int zfcp_erp_adisc(struct zfcp_port *); | |||
| 27 | static void zfcp_erp_adisc_handler(unsigned long); | 27 | static void zfcp_erp_adisc_handler(unsigned long); |
| 28 | 28 | ||
| 29 | static int zfcp_erp_adapter_reopen_internal(struct zfcp_adapter *, int, u8, | 29 | static int zfcp_erp_adapter_reopen_internal(struct zfcp_adapter *, int, u8, |
| 30 | u64); | 30 | void *); |
| 31 | static int zfcp_erp_port_forced_reopen_internal(struct zfcp_port *, int, u8, | 31 | static int zfcp_erp_port_forced_reopen_internal(struct zfcp_port *, int, u8, |
| 32 | u64); | 32 | void *); |
| 33 | static int zfcp_erp_port_reopen_internal(struct zfcp_port *, int, u8, u64); | 33 | static int zfcp_erp_port_reopen_internal(struct zfcp_port *, int, u8, void *); |
| 34 | static int zfcp_erp_unit_reopen_internal(struct zfcp_unit *, int, u8, u64); | 34 | static int zfcp_erp_unit_reopen_internal(struct zfcp_unit *, int, u8, void *); |
| 35 | 35 | ||
| 36 | static int zfcp_erp_port_reopen_all_internal(struct zfcp_adapter *, int, u8, | 36 | static int zfcp_erp_port_reopen_all_internal(struct zfcp_adapter *, int, u8, |
| 37 | u64); | 37 | void *); |
| 38 | static int zfcp_erp_unit_reopen_all_internal(struct zfcp_port *, int, u8, u64); | 38 | static int zfcp_erp_unit_reopen_all_internal(struct zfcp_port *, int, u8, |
| 39 | void *); | ||
| 39 | 40 | ||
| 40 | static void zfcp_erp_adapter_block(struct zfcp_adapter *, int); | 41 | static void zfcp_erp_adapter_block(struct zfcp_adapter *, int); |
| 41 | static void zfcp_erp_adapter_unblock(struct zfcp_adapter *); | 42 | static void zfcp_erp_adapter_unblock(struct zfcp_adapter *); |
| @@ -101,7 +102,7 @@ static void zfcp_erp_action_dismiss(struct zfcp_erp_action *); | |||
| 101 | 102 | ||
| 102 | static int zfcp_erp_action_enqueue(int, struct zfcp_adapter *, | 103 | static int zfcp_erp_action_enqueue(int, struct zfcp_adapter *, |
| 103 | struct zfcp_port *, struct zfcp_unit *, | 104 | struct zfcp_port *, struct zfcp_unit *, |
| 104 | u8 id, u64 ref); | 105 | u8 id, void *ref); |
| 105 | static int zfcp_erp_action_dequeue(struct zfcp_erp_action *); | 106 | static int zfcp_erp_action_dequeue(struct zfcp_erp_action *); |
| 106 | static void zfcp_erp_action_cleanup(int, struct zfcp_adapter *, | 107 | static void zfcp_erp_action_cleanup(int, struct zfcp_adapter *, |
| 107 | struct zfcp_port *, struct zfcp_unit *, | 108 | struct zfcp_port *, struct zfcp_unit *, |
| @@ -165,7 +166,7 @@ static void zfcp_close_fsf(struct zfcp_adapter *adapter) | |||
| 165 | /* reset FSF request sequence number */ | 166 | /* reset FSF request sequence number */ |
| 166 | adapter->fsf_req_seq_no = 0; | 167 | adapter->fsf_req_seq_no = 0; |
| 167 | /* all ports and units are closed */ | 168 | /* all ports and units are closed */ |
| 168 | zfcp_erp_modify_adapter_status(adapter, 24, 0, | 169 | zfcp_erp_modify_adapter_status(adapter, 24, NULL, |
| 169 | ZFCP_STATUS_COMMON_OPEN, ZFCP_CLEAR); | 170 | ZFCP_STATUS_COMMON_OPEN, ZFCP_CLEAR); |
| 170 | } | 171 | } |
| 171 | 172 | ||
| @@ -181,7 +182,8 @@ static void zfcp_close_fsf(struct zfcp_adapter *adapter) | |||
| 181 | static void zfcp_fsf_request_timeout_handler(unsigned long data) | 182 | static void zfcp_fsf_request_timeout_handler(unsigned long data) |
| 182 | { | 183 | { |
| 183 | struct zfcp_adapter *adapter = (struct zfcp_adapter *) data; | 184 | struct zfcp_adapter *adapter = (struct zfcp_adapter *) data; |
| 184 | zfcp_erp_adapter_reopen(adapter, ZFCP_STATUS_COMMON_ERP_FAILED, 62, 0); | 185 | zfcp_erp_adapter_reopen(adapter, ZFCP_STATUS_COMMON_ERP_FAILED, 62, |
| 186 | NULL); | ||
| 185 | } | 187 | } |
| 186 | 188 | ||
| 187 | void zfcp_fsf_start_timer(struct zfcp_fsf_req *fsf_req, unsigned long timeout) | 189 | void zfcp_fsf_start_timer(struct zfcp_fsf_req *fsf_req, unsigned long timeout) |
| @@ -203,7 +205,7 @@ void zfcp_fsf_start_timer(struct zfcp_fsf_req *fsf_req, unsigned long timeout) | |||
| 203 | * <0 - failed to initiate action | 205 | * <0 - failed to initiate action |
| 204 | */ | 206 | */ |
| 205 | static int zfcp_erp_adapter_reopen_internal(struct zfcp_adapter *adapter, | 207 | static int zfcp_erp_adapter_reopen_internal(struct zfcp_adapter *adapter, |
| 206 | int clear_mask, u8 id, u64 ref) | 208 | int clear_mask, u8 id, void *ref) |
| 207 | { | 209 | { |
| 208 | int retval; | 210 | int retval; |
| 209 | 211 | ||
| @@ -216,7 +218,7 @@ static int zfcp_erp_adapter_reopen_internal(struct zfcp_adapter *adapter, | |||
| 216 | ZFCP_LOG_DEBUG("skipped reopen of failed adapter %s\n", | 218 | ZFCP_LOG_DEBUG("skipped reopen of failed adapter %s\n", |
| 217 | zfcp_get_busid_by_adapter(adapter)); | 219 | zfcp_get_busid_by_adapter(adapter)); |
| 218 | /* ensure propagation of failed status to new devices */ | 220 | /* ensure propagation of failed status to new devices */ |
| 219 | zfcp_erp_adapter_failed(adapter, 13, 0); | 221 | zfcp_erp_adapter_failed(adapter, 13, NULL); |
| 220 | retval = -EIO; | 222 | retval = -EIO; |
| 221 | goto out; | 223 | goto out; |
| 222 | } | 224 | } |
| @@ -237,7 +239,7 @@ static int zfcp_erp_adapter_reopen_internal(struct zfcp_adapter *adapter, | |||
| 237 | * <0 - failed to initiate action | 239 | * <0 - failed to initiate action |
| 238 | */ | 240 | */ |
| 239 | int zfcp_erp_adapter_reopen(struct zfcp_adapter *adapter, int clear_mask, | 241 | int zfcp_erp_adapter_reopen(struct zfcp_adapter *adapter, int clear_mask, |
| 240 | u8 id, u64 ref) | 242 | u8 id, void *ref) |
| 241 | { | 243 | { |
| 242 | int retval; | 244 | int retval; |
| 243 | unsigned long flags; | 245 | unsigned long flags; |
| @@ -252,7 +254,7 @@ int zfcp_erp_adapter_reopen(struct zfcp_adapter *adapter, int clear_mask, | |||
| 252 | } | 254 | } |
| 253 | 255 | ||
| 254 | int zfcp_erp_adapter_shutdown(struct zfcp_adapter *adapter, int clear_mask, | 256 | int zfcp_erp_adapter_shutdown(struct zfcp_adapter *adapter, int clear_mask, |
| 255 | u8 id, u64 ref) | 257 | u8 id, void *ref) |
| 256 | { | 258 | { |
| 257 | int retval; | 259 | int retval; |
| 258 | 260 | ||
| @@ -265,7 +267,7 @@ int zfcp_erp_adapter_shutdown(struct zfcp_adapter *adapter, int clear_mask, | |||
| 265 | } | 267 | } |
| 266 | 268 | ||
| 267 | int zfcp_erp_port_shutdown(struct zfcp_port *port, int clear_mask, u8 id, | 269 | int zfcp_erp_port_shutdown(struct zfcp_port *port, int clear_mask, u8 id, |
| 268 | u64 ref) | 270 | void *ref) |
| 269 | { | 271 | { |
| 270 | int retval; | 272 | int retval; |
| 271 | 273 | ||
| @@ -278,7 +280,7 @@ int zfcp_erp_port_shutdown(struct zfcp_port *port, int clear_mask, u8 id, | |||
| 278 | } | 280 | } |
| 279 | 281 | ||
| 280 | int zfcp_erp_unit_shutdown(struct zfcp_unit *unit, int clear_mask, u8 id, | 282 | int zfcp_erp_unit_shutdown(struct zfcp_unit *unit, int clear_mask, u8 id, |
| 281 | u64 ref) | 283 | void *ref) |
| 282 | { | 284 | { |
| 283 | int retval; | 285 | int retval; |
| 284 | 286 | ||
| @@ -399,7 +401,7 @@ zfcp_erp_adisc_handler(unsigned long data) | |||
| 399 | "force physical port reopen " | 401 | "force physical port reopen " |
| 400 | "(adapter %s, port d_id=0x%06x)\n", | 402 | "(adapter %s, port d_id=0x%06x)\n", |
| 401 | zfcp_get_busid_by_adapter(adapter), d_id); | 403 | zfcp_get_busid_by_adapter(adapter), d_id); |
| 402 | if (zfcp_erp_port_forced_reopen(port, 0, 63, 0)) | 404 | if (zfcp_erp_port_forced_reopen(port, 0, 63, NULL)) |
| 403 | ZFCP_LOG_NORMAL("failed reopen of port " | 405 | ZFCP_LOG_NORMAL("failed reopen of port " |
| 404 | "(adapter %s, wwpn=0x%016Lx)\n", | 406 | "(adapter %s, wwpn=0x%016Lx)\n", |
| 405 | zfcp_get_busid_by_port(port), | 407 | zfcp_get_busid_by_port(port), |
| @@ -426,7 +428,7 @@ zfcp_erp_adisc_handler(unsigned long data) | |||
| 426 | "adisc_resp_wwpn=0x%016Lx)\n", | 428 | "adisc_resp_wwpn=0x%016Lx)\n", |
| 427 | zfcp_get_busid_by_port(port), | 429 | zfcp_get_busid_by_port(port), |
| 428 | port->wwpn, (wwn_t) adisc->wwpn); | 430 | port->wwpn, (wwn_t) adisc->wwpn); |
| 429 | if (zfcp_erp_port_reopen(port, 0, 64, 0)) | 431 | if (zfcp_erp_port_reopen(port, 0, 64, NULL)) |
| 430 | ZFCP_LOG_NORMAL("failed reopen of port " | 432 | ZFCP_LOG_NORMAL("failed reopen of port " |
| 431 | "(adapter %s, wwpn=0x%016Lx)\n", | 433 | "(adapter %s, wwpn=0x%016Lx)\n", |
| 432 | zfcp_get_busid_by_port(port), | 434 | zfcp_get_busid_by_port(port), |
| @@ -460,7 +462,7 @@ zfcp_test_link(struct zfcp_port *port) | |||
| 460 | ZFCP_LOG_NORMAL("reopen needed for port 0x%016Lx " | 462 | ZFCP_LOG_NORMAL("reopen needed for port 0x%016Lx " |
| 461 | "on adapter %s\n ", port->wwpn, | 463 | "on adapter %s\n ", port->wwpn, |
| 462 | zfcp_get_busid_by_port(port)); | 464 | zfcp_get_busid_by_port(port)); |
| 463 | retval = zfcp_erp_port_forced_reopen(port, 0, 65, 0); | 465 | retval = zfcp_erp_port_forced_reopen(port, 0, 65, NULL); |
| 464 | if (retval != 0) { | 466 | if (retval != 0) { |
| 465 | ZFCP_LOG_NORMAL("reopen of remote port 0x%016Lx " | 467 | ZFCP_LOG_NORMAL("reopen of remote port 0x%016Lx " |
| 466 | "on adapter %s failed\n", port->wwpn, | 468 | "on adapter %s failed\n", port->wwpn, |
| @@ -484,7 +486,8 @@ zfcp_test_link(struct zfcp_port *port) | |||
| 484 | * <0 - failed to initiate action | 486 | * <0 - failed to initiate action |
| 485 | */ | 487 | */ |
| 486 | static int zfcp_erp_port_forced_reopen_internal(struct zfcp_port *port, | 488 | static int zfcp_erp_port_forced_reopen_internal(struct zfcp_port *port, |
| 487 | int clear_mask, u8 id, u64 ref) | 489 | int clear_mask, u8 id, |
| 490 | void *ref) | ||
| 488 | { | 491 | { |
| 489 | int retval; | 492 | int retval; |
| 490 | 493 | ||
| @@ -518,7 +521,7 @@ static int zfcp_erp_port_forced_reopen_internal(struct zfcp_port *port, | |||
| 518 | * <0 - failed to initiate action | 521 | * <0 - failed to initiate action |
| 519 | */ | 522 | */ |
| 520 | int zfcp_erp_port_forced_reopen(struct zfcp_port *port, int clear_mask, u8 id, | 523 | int zfcp_erp_port_forced_reopen(struct zfcp_port *port, int clear_mask, u8 id, |
| 521 | u64 ref) | 524 | void *ref) |
| 522 | { | 525 | { |
| 523 | int retval; | 526 | int retval; |
| 524 | unsigned long flags; | 527 | unsigned long flags; |
| @@ -546,7 +549,7 @@ int zfcp_erp_port_forced_reopen(struct zfcp_port *port, int clear_mask, u8 id, | |||
| 546 | * <0 - failed to initiate action | 549 | * <0 - failed to initiate action |
| 547 | */ | 550 | */ |
| 548 | static int zfcp_erp_port_reopen_internal(struct zfcp_port *port, int clear_mask, | 551 | static int zfcp_erp_port_reopen_internal(struct zfcp_port *port, int clear_mask, |
| 549 | u8 id, u64 ref) | 552 | u8 id, void *ref) |
| 550 | { | 553 | { |
| 551 | int retval; | 554 | int retval; |
| 552 | 555 | ||
| @@ -560,7 +563,7 @@ static int zfcp_erp_port_reopen_internal(struct zfcp_port *port, int clear_mask, | |||
| 560 | "on adapter %s\n", port->wwpn, | 563 | "on adapter %s\n", port->wwpn, |
| 561 | zfcp_get_busid_by_port(port)); | 564 | zfcp_get_busid_by_port(port)); |
| 562 | /* ensure propagation of failed status to new devices */ | 565 | /* ensure propagation of failed status to new devices */ |
| 563 | zfcp_erp_port_failed(port, 14, 0); | 566 | zfcp_erp_port_failed(port, 14, NULL); |
| 564 | retval = -EIO; | 567 | retval = -EIO; |
| 565 | goto out; | 568 | goto out; |
| 566 | } | 569 | } |
| @@ -582,7 +585,8 @@ static int zfcp_erp_port_reopen_internal(struct zfcp_port *port, int clear_mask, | |||
| 582 | * correct locking. An error recovery task is initiated to do the reopen. | 585 | * correct locking. An error recovery task is initiated to do the reopen. |
| 583 | * To wait for the completion of the reopen zfcp_erp_wait should be used. | 586 | * To wait for the completion of the reopen zfcp_erp_wait should be used. |
| 584 | */ | 587 | */ |
| 585 | int zfcp_erp_port_reopen(struct zfcp_port *port, int clear_mask, u8 id, u64 ref) | 588 | int zfcp_erp_port_reopen(struct zfcp_port *port, int clear_mask, u8 id, |
| 589 | void *ref) | ||
| 586 | { | 590 | { |
| 587 | int retval; | 591 | int retval; |
| 588 | unsigned long flags; | 592 | unsigned long flags; |
| @@ -608,7 +612,7 @@ int zfcp_erp_port_reopen(struct zfcp_port *port, int clear_mask, u8 id, u64 ref) | |||
| 608 | * <0 - failed to initiate action | 612 | * <0 - failed to initiate action |
| 609 | */ | 613 | */ |
| 610 | static int zfcp_erp_unit_reopen_internal(struct zfcp_unit *unit, int clear_mask, | 614 | static int zfcp_erp_unit_reopen_internal(struct zfcp_unit *unit, int clear_mask, |
| 611 | u8 id, u64 ref) | 615 | u8 id, void *ref) |
| 612 | { | 616 | { |
| 613 | int retval; | 617 | int retval; |
| 614 | struct zfcp_adapter *adapter = unit->port->adapter; | 618 | struct zfcp_adapter *adapter = unit->port->adapter; |
| @@ -644,7 +648,8 @@ static int zfcp_erp_unit_reopen_internal(struct zfcp_unit *unit, int clear_mask, | |||
| 644 | * locking. An error recovery task is initiated to do the reopen. | 648 | * locking. An error recovery task is initiated to do the reopen. |
| 645 | * To wait for the completion of the reopen zfcp_erp_wait should be used. | 649 | * To wait for the completion of the reopen zfcp_erp_wait should be used. |
| 646 | */ | 650 | */ |
| 647 | int zfcp_erp_unit_reopen(struct zfcp_unit *unit, int clear_mask, u8 id, u64 ref) | 651 | int zfcp_erp_unit_reopen(struct zfcp_unit *unit, int clear_mask, u8 id, |
| 652 | void *ref) | ||
| 648 | { | 653 | { |
| 649 | int retval; | 654 | int retval; |
| 650 | unsigned long flags; | 655 | unsigned long flags; |
| @@ -668,7 +673,7 @@ int zfcp_erp_unit_reopen(struct zfcp_unit *unit, int clear_mask, u8 id, u64 ref) | |||
| 668 | */ | 673 | */ |
| 669 | static void zfcp_erp_adapter_block(struct zfcp_adapter *adapter, int clear_mask) | 674 | static void zfcp_erp_adapter_block(struct zfcp_adapter *adapter, int clear_mask) |
| 670 | { | 675 | { |
| 671 | zfcp_erp_modify_adapter_status(adapter, 15, 0, | 676 | zfcp_erp_modify_adapter_status(adapter, 15, NULL, |
| 672 | ZFCP_STATUS_COMMON_UNBLOCKED | | 677 | ZFCP_STATUS_COMMON_UNBLOCKED | |
| 673 | clear_mask, ZFCP_CLEAR); | 678 | clear_mask, ZFCP_CLEAR); |
| 674 | } | 679 | } |
| @@ -704,7 +709,7 @@ static void zfcp_erp_adapter_unblock(struct zfcp_adapter *adapter) | |||
| 704 | { | 709 | { |
| 705 | if (atomic_test_and_set_mask(ZFCP_STATUS_COMMON_UNBLOCKED, | 710 | if (atomic_test_and_set_mask(ZFCP_STATUS_COMMON_UNBLOCKED, |
| 706 | &adapter->status)) | 711 | &adapter->status)) |
| 707 | zfcp_rec_dbf_event_adapter(16, 0, adapter); | 712 | zfcp_rec_dbf_event_adapter(16, NULL, adapter); |
| 708 | } | 713 | } |
| 709 | 714 | ||
| 710 | /* | 715 | /* |
| @@ -719,7 +724,7 @@ static void zfcp_erp_adapter_unblock(struct zfcp_adapter *adapter) | |||
| 719 | static void | 724 | static void |
| 720 | zfcp_erp_port_block(struct zfcp_port *port, int clear_mask) | 725 | zfcp_erp_port_block(struct zfcp_port *port, int clear_mask) |
| 721 | { | 726 | { |
| 722 | zfcp_erp_modify_port_status(port, 17, 0, | 727 | zfcp_erp_modify_port_status(port, 17, NULL, |
| 723 | ZFCP_STATUS_COMMON_UNBLOCKED | clear_mask, | 728 | ZFCP_STATUS_COMMON_UNBLOCKED | clear_mask, |
| 724 | ZFCP_CLEAR); | 729 | ZFCP_CLEAR); |
| 725 | } | 730 | } |
| @@ -736,7 +741,7 @@ zfcp_erp_port_unblock(struct zfcp_port *port) | |||
| 736 | { | 741 | { |
| 737 | if (atomic_test_and_set_mask(ZFCP_STATUS_COMMON_UNBLOCKED, | 742 | if (atomic_test_and_set_mask(ZFCP_STATUS_COMMON_UNBLOCKED, |
| 738 | &port->status)) | 743 | &port->status)) |
| 739 | zfcp_rec_dbf_event_port(18, 0, port); | 744 | zfcp_rec_dbf_event_port(18, NULL, port); |
| 740 | } | 745 | } |
| 741 | 746 | ||
| 742 | /* | 747 | /* |
| @@ -751,7 +756,7 @@ zfcp_erp_port_unblock(struct zfcp_port *port) | |||
| 751 | static void | 756 | static void |
| 752 | zfcp_erp_unit_block(struct zfcp_unit *unit, int clear_mask) | 757 | zfcp_erp_unit_block(struct zfcp_unit *unit, int clear_mask) |
| 753 | { | 758 | { |
| 754 | zfcp_erp_modify_unit_status(unit, 19, 0, | 759 | zfcp_erp_modify_unit_status(unit, 19, NULL, |
| 755 | ZFCP_STATUS_COMMON_UNBLOCKED | clear_mask, | 760 | ZFCP_STATUS_COMMON_UNBLOCKED | clear_mask, |
| 756 | ZFCP_CLEAR); | 761 | ZFCP_CLEAR); |
| 757 | } | 762 | } |
| @@ -768,7 +773,7 @@ zfcp_erp_unit_unblock(struct zfcp_unit *unit) | |||
| 768 | { | 773 | { |
| 769 | if (atomic_test_and_set_mask(ZFCP_STATUS_COMMON_UNBLOCKED, | 774 | if (atomic_test_and_set_mask(ZFCP_STATUS_COMMON_UNBLOCKED, |
| 770 | &unit->status)) | 775 | &unit->status)) |
| 771 | zfcp_rec_dbf_event_unit(20, 0, unit); | 776 | zfcp_rec_dbf_event_unit(20, NULL, unit); |
| 772 | } | 777 | } |
| 773 | 778 | ||
| 774 | static void | 779 | static void |
| @@ -1140,7 +1145,7 @@ zfcp_erp_strategy(struct zfcp_erp_action *erp_action) | |||
| 1140 | "restarting I/O on adapter %s " | 1145 | "restarting I/O on adapter %s " |
| 1141 | "to free mempool\n", | 1146 | "to free mempool\n", |
| 1142 | zfcp_get_busid_by_adapter(adapter)); | 1147 | zfcp_get_busid_by_adapter(adapter)); |
| 1143 | zfcp_erp_adapter_reopen_internal(adapter, 0, 66, 0); | 1148 | zfcp_erp_adapter_reopen_internal(adapter, 0, 66, NULL); |
| 1144 | } else { | 1149 | } else { |
| 1145 | retval = zfcp_erp_strategy_memwait(erp_action); | 1150 | retval = zfcp_erp_strategy_memwait(erp_action); |
| 1146 | } | 1151 | } |
| @@ -1295,7 +1300,7 @@ zfcp_erp_strategy_memwait(struct zfcp_erp_action *erp_action) | |||
| 1295 | * | 1300 | * |
| 1296 | */ | 1301 | */ |
| 1297 | void | 1302 | void |
| 1298 | zfcp_erp_adapter_failed(struct zfcp_adapter *adapter, u8 id, u64 ref) | 1303 | zfcp_erp_adapter_failed(struct zfcp_adapter *adapter, u8 id, void *ref) |
| 1299 | { | 1304 | { |
| 1300 | zfcp_erp_modify_adapter_status(adapter, id, ref, | 1305 | zfcp_erp_modify_adapter_status(adapter, id, ref, |
| 1301 | ZFCP_STATUS_COMMON_ERP_FAILED, ZFCP_SET); | 1306 | ZFCP_STATUS_COMMON_ERP_FAILED, ZFCP_SET); |
| @@ -1310,7 +1315,7 @@ zfcp_erp_adapter_failed(struct zfcp_adapter *adapter, u8 id, u64 ref) | |||
| 1310 | * | 1315 | * |
| 1311 | */ | 1316 | */ |
| 1312 | void | 1317 | void |
| 1313 | zfcp_erp_port_failed(struct zfcp_port *port, u8 id, u64 ref) | 1318 | zfcp_erp_port_failed(struct zfcp_port *port, u8 id, void *ref) |
| 1314 | { | 1319 | { |
| 1315 | zfcp_erp_modify_port_status(port, id, ref, | 1320 | zfcp_erp_modify_port_status(port, id, ref, |
| 1316 | ZFCP_STATUS_COMMON_ERP_FAILED, ZFCP_SET); | 1321 | ZFCP_STATUS_COMMON_ERP_FAILED, ZFCP_SET); |
| @@ -1331,7 +1336,7 @@ zfcp_erp_port_failed(struct zfcp_port *port, u8 id, u64 ref) | |||
| 1331 | * | 1336 | * |
| 1332 | */ | 1337 | */ |
| 1333 | void | 1338 | void |
| 1334 | zfcp_erp_unit_failed(struct zfcp_unit *unit, u8 id, u64 ref) | 1339 | zfcp_erp_unit_failed(struct zfcp_unit *unit, u8 id, void *ref) |
| 1335 | { | 1340 | { |
| 1336 | zfcp_erp_modify_unit_status(unit, id, ref, | 1341 | zfcp_erp_modify_unit_status(unit, id, ref, |
| 1337 | ZFCP_STATUS_COMMON_ERP_FAILED, ZFCP_SET); | 1342 | ZFCP_STATUS_COMMON_ERP_FAILED, ZFCP_SET); |
| @@ -1395,7 +1400,7 @@ zfcp_erp_strategy_statechange(int action, | |||
| 1395 | status)) { | 1400 | status)) { |
| 1396 | zfcp_erp_adapter_reopen_internal(adapter, | 1401 | zfcp_erp_adapter_reopen_internal(adapter, |
| 1397 | ZFCP_STATUS_COMMON_ERP_FAILED, | 1402 | ZFCP_STATUS_COMMON_ERP_FAILED, |
| 1398 | 67, 0); | 1403 | 67, NULL); |
| 1399 | retval = ZFCP_ERP_EXIT; | 1404 | retval = ZFCP_ERP_EXIT; |
| 1400 | } | 1405 | } |
| 1401 | break; | 1406 | break; |
| @@ -1406,7 +1411,7 @@ zfcp_erp_strategy_statechange(int action, | |||
| 1406 | status)) { | 1411 | status)) { |
| 1407 | zfcp_erp_port_reopen_internal(port, | 1412 | zfcp_erp_port_reopen_internal(port, |
| 1408 | ZFCP_STATUS_COMMON_ERP_FAILED, | 1413 | ZFCP_STATUS_COMMON_ERP_FAILED, |
| 1409 | 68, 0); | 1414 | 68, NULL); |
| 1410 | retval = ZFCP_ERP_EXIT; | 1415 | retval = ZFCP_ERP_EXIT; |
| 1411 | } | 1416 | } |
| 1412 | break; | 1417 | break; |
| @@ -1416,7 +1421,7 @@ zfcp_erp_strategy_statechange(int action, | |||
| 1416 | status)) { | 1421 | status)) { |
| 1417 | zfcp_erp_unit_reopen_internal(unit, | 1422 | zfcp_erp_unit_reopen_internal(unit, |
| 1418 | ZFCP_STATUS_COMMON_ERP_FAILED, | 1423 | ZFCP_STATUS_COMMON_ERP_FAILED, |
| 1419 | 69, 0); | 1424 | 69, NULL); |
| 1420 | retval = ZFCP_ERP_EXIT; | 1425 | retval = ZFCP_ERP_EXIT; |
| 1421 | } | 1426 | } |
| 1422 | break; | 1427 | break; |
| @@ -1448,7 +1453,7 @@ zfcp_erp_strategy_check_unit(struct zfcp_unit *unit, int result) | |||
| 1448 | case ZFCP_ERP_FAILED : | 1453 | case ZFCP_ERP_FAILED : |
| 1449 | atomic_inc(&unit->erp_counter); | 1454 | atomic_inc(&unit->erp_counter); |
| 1450 | if (atomic_read(&unit->erp_counter) > ZFCP_MAX_ERPS) | 1455 | if (atomic_read(&unit->erp_counter) > ZFCP_MAX_ERPS) |
| 1451 | zfcp_erp_unit_failed(unit, 21, 0); | 1456 | zfcp_erp_unit_failed(unit, 21, NULL); |
| 1452 | break; | 1457 | break; |
| 1453 | case ZFCP_ERP_EXIT : | 1458 | case ZFCP_ERP_EXIT : |
| 1454 | /* nothing */ | 1459 | /* nothing */ |
| @@ -1474,7 +1479,7 @@ zfcp_erp_strategy_check_port(struct zfcp_port *port, int result) | |||
| 1474 | case ZFCP_ERP_FAILED : | 1479 | case ZFCP_ERP_FAILED : |
| 1475 | atomic_inc(&port->erp_counter); | 1480 | atomic_inc(&port->erp_counter); |
| 1476 | if (atomic_read(&port->erp_counter) > ZFCP_MAX_ERPS) | 1481 | if (atomic_read(&port->erp_counter) > ZFCP_MAX_ERPS) |
| 1477 | zfcp_erp_port_failed(port, 22, 0); | 1482 | zfcp_erp_port_failed(port, 22, NULL); |
| 1478 | break; | 1483 | break; |
| 1479 | case ZFCP_ERP_EXIT : | 1484 | case ZFCP_ERP_EXIT : |
| 1480 | /* nothing */ | 1485 | /* nothing */ |
| @@ -1500,7 +1505,7 @@ zfcp_erp_strategy_check_adapter(struct zfcp_adapter *adapter, int result) | |||
| 1500 | case ZFCP_ERP_FAILED : | 1505 | case ZFCP_ERP_FAILED : |
| 1501 | atomic_inc(&adapter->erp_counter); | 1506 | atomic_inc(&adapter->erp_counter); |
| 1502 | if (atomic_read(&adapter->erp_counter) > ZFCP_MAX_ERPS) | 1507 | if (atomic_read(&adapter->erp_counter) > ZFCP_MAX_ERPS) |
| 1503 | zfcp_erp_adapter_failed(adapter, 23, 0); | 1508 | zfcp_erp_adapter_failed(adapter, 23, NULL); |
| 1504 | break; | 1509 | break; |
| 1505 | case ZFCP_ERP_EXIT : | 1510 | case ZFCP_ERP_EXIT : |
| 1506 | /* nothing */ | 1511 | /* nothing */ |
| @@ -1588,29 +1593,29 @@ zfcp_erp_strategy_followup_actions(int action, | |||
| 1588 | 1593 | ||
| 1589 | case ZFCP_ERP_ACTION_REOPEN_ADAPTER: | 1594 | case ZFCP_ERP_ACTION_REOPEN_ADAPTER: |
| 1590 | if (status == ZFCP_ERP_SUCCEEDED) | 1595 | if (status == ZFCP_ERP_SUCCEEDED) |
| 1591 | zfcp_erp_port_reopen_all_internal(adapter, 0, 70, 0); | 1596 | zfcp_erp_port_reopen_all_internal(adapter, 0, 70, NULL); |
| 1592 | else | 1597 | else |
| 1593 | zfcp_erp_adapter_reopen_internal(adapter, 0, 71, 0); | 1598 | zfcp_erp_adapter_reopen_internal(adapter, 0, 71, NULL); |
| 1594 | break; | 1599 | break; |
| 1595 | 1600 | ||
| 1596 | case ZFCP_ERP_ACTION_REOPEN_PORT_FORCED: | 1601 | case ZFCP_ERP_ACTION_REOPEN_PORT_FORCED: |
| 1597 | if (status == ZFCP_ERP_SUCCEEDED) | 1602 | if (status == ZFCP_ERP_SUCCEEDED) |
| 1598 | zfcp_erp_port_reopen_internal(port, 0, 72, 0); | 1603 | zfcp_erp_port_reopen_internal(port, 0, 72, NULL); |
| 1599 | else | 1604 | else |
| 1600 | zfcp_erp_adapter_reopen_internal(adapter, 0, 73, 0); | 1605 | zfcp_erp_adapter_reopen_internal(adapter, 0, 73, NULL); |
| 1601 | break; | 1606 | break; |
| 1602 | 1607 | ||
| 1603 | case ZFCP_ERP_ACTION_REOPEN_PORT: | 1608 | case ZFCP_ERP_ACTION_REOPEN_PORT: |
| 1604 | if (status == ZFCP_ERP_SUCCEEDED) | 1609 | if (status == ZFCP_ERP_SUCCEEDED) |
| 1605 | zfcp_erp_unit_reopen_all_internal(port, 0, 74, 0); | 1610 | zfcp_erp_unit_reopen_all_internal(port, 0, 74, NULL); |
| 1606 | else | 1611 | else |
| 1607 | zfcp_erp_port_forced_reopen_internal(port, 0, 75, 0); | 1612 | zfcp_erp_port_forced_reopen_internal(port, 0, 75, NULL); |
| 1608 | break; | 1613 | break; |
| 1609 | 1614 | ||
| 1610 | case ZFCP_ERP_ACTION_REOPEN_UNIT: | 1615 | case ZFCP_ERP_ACTION_REOPEN_UNIT: |
| 1611 | /* Nothing to do if status == ZFCP_ERP_SUCCEEDED */ | 1616 | /* Nothing to do if status == ZFCP_ERP_SUCCEEDED */ |
| 1612 | if (status != ZFCP_ERP_SUCCEEDED) | 1617 | if (status != ZFCP_ERP_SUCCEEDED) |
| 1613 | zfcp_erp_port_reopen_internal(unit->port, 0, 76, 0); | 1618 | zfcp_erp_port_reopen_internal(unit->port, 0, 76, NULL); |
| 1614 | break; | 1619 | break; |
| 1615 | } | 1620 | } |
| 1616 | 1621 | ||
| @@ -1654,7 +1659,7 @@ zfcp_erp_wait(struct zfcp_adapter *adapter) | |||
| 1654 | } | 1659 | } |
| 1655 | 1660 | ||
| 1656 | void zfcp_erp_modify_adapter_status(struct zfcp_adapter *adapter, u8 id, | 1661 | void zfcp_erp_modify_adapter_status(struct zfcp_adapter *adapter, u8 id, |
| 1657 | u64 ref, u32 mask, int set_or_clear) | 1662 | void *ref, u32 mask, int set_or_clear) |
| 1658 | { | 1663 | { |
| 1659 | struct zfcp_port *port; | 1664 | struct zfcp_port *port; |
| 1660 | u32 changed, common_mask = mask & ZFCP_COMMON_FLAGS; | 1665 | u32 changed, common_mask = mask & ZFCP_COMMON_FLAGS; |
| @@ -1682,7 +1687,7 @@ void zfcp_erp_modify_adapter_status(struct zfcp_adapter *adapter, u8 id, | |||
| 1682 | * purpose: sets the port and all underlying devices to ERP_FAILED | 1687 | * purpose: sets the port and all underlying devices to ERP_FAILED |
| 1683 | * | 1688 | * |
| 1684 | */ | 1689 | */ |
| 1685 | void zfcp_erp_modify_port_status(struct zfcp_port *port, u8 id, u64 ref, | 1690 | void zfcp_erp_modify_port_status(struct zfcp_port *port, u8 id, void *ref, |
| 1686 | u32 mask, int set_or_clear) | 1691 | u32 mask, int set_or_clear) |
| 1687 | { | 1692 | { |
| 1688 | struct zfcp_unit *unit; | 1693 | struct zfcp_unit *unit; |
| @@ -1711,7 +1716,7 @@ void zfcp_erp_modify_port_status(struct zfcp_port *port, u8 id, u64 ref, | |||
| 1711 | * purpose: sets the unit to ERP_FAILED | 1716 | * purpose: sets the unit to ERP_FAILED |
| 1712 | * | 1717 | * |
| 1713 | */ | 1718 | */ |
| 1714 | void zfcp_erp_modify_unit_status(struct zfcp_unit *unit, u8 id, u64 ref, | 1719 | void zfcp_erp_modify_unit_status(struct zfcp_unit *unit, u8 id, void *ref, |
| 1715 | u32 mask, int set_or_clear) | 1720 | u32 mask, int set_or_clear) |
| 1716 | { | 1721 | { |
| 1717 | u32 changed; | 1722 | u32 changed; |
| @@ -1738,7 +1743,7 @@ void zfcp_erp_modify_unit_status(struct zfcp_unit *unit, u8 id, u64 ref, | |||
| 1738 | * <0 - failed to initiate action | 1743 | * <0 - failed to initiate action |
| 1739 | */ | 1744 | */ |
| 1740 | int zfcp_erp_port_reopen_all(struct zfcp_adapter *adapter, int clear_mask, | 1745 | int zfcp_erp_port_reopen_all(struct zfcp_adapter *adapter, int clear_mask, |
| 1741 | u8 id, u64 ref) | 1746 | u8 id, void *ref) |
| 1742 | { | 1747 | { |
| 1743 | int retval; | 1748 | int retval; |
| 1744 | unsigned long flags; | 1749 | unsigned long flags; |
| @@ -1754,7 +1759,7 @@ int zfcp_erp_port_reopen_all(struct zfcp_adapter *adapter, int clear_mask, | |||
| 1754 | } | 1759 | } |
| 1755 | 1760 | ||
| 1756 | static int zfcp_erp_port_reopen_all_internal(struct zfcp_adapter *adapter, | 1761 | static int zfcp_erp_port_reopen_all_internal(struct zfcp_adapter *adapter, |
| 1757 | int clear_mask, u8 id, u64 ref) | 1762 | int clear_mask, u8 id, void *ref) |
| 1758 | { | 1763 | { |
| 1759 | int retval = 0; | 1764 | int retval = 0; |
| 1760 | struct zfcp_port *port; | 1765 | struct zfcp_port *port; |
| @@ -1775,7 +1780,7 @@ static int zfcp_erp_port_reopen_all_internal(struct zfcp_adapter *adapter, | |||
| 1775 | * returns: FIXME | 1780 | * returns: FIXME |
| 1776 | */ | 1781 | */ |
| 1777 | static int zfcp_erp_unit_reopen_all_internal(struct zfcp_port *port, | 1782 | static int zfcp_erp_unit_reopen_all_internal(struct zfcp_port *port, |
| 1778 | int clear_mask, u8 id, u64 ref) | 1783 | int clear_mask, u8 id, void *ref) |
| 1779 | { | 1784 | { |
| 1780 | int retval = 0; | 1785 | int retval = 0; |
| 1781 | struct zfcp_unit *unit; | 1786 | struct zfcp_unit *unit; |
| @@ -2291,7 +2296,7 @@ zfcp_erp_port_strategy_open_common(struct zfcp_erp_action *erp_action) | |||
| 2291 | port->wwpn, | 2296 | port->wwpn, |
| 2292 | zfcp_get_busid_by_adapter(adapter), | 2297 | zfcp_get_busid_by_adapter(adapter), |
| 2293 | adapter->peer_wwpn); | 2298 | adapter->peer_wwpn); |
| 2294 | zfcp_erp_port_failed(port, 25, 0); | 2299 | zfcp_erp_port_failed(port, 25, NULL); |
| 2295 | retval = ZFCP_ERP_FAILED; | 2300 | retval = ZFCP_ERP_FAILED; |
| 2296 | break; | 2301 | break; |
| 2297 | } | 2302 | } |
| @@ -2318,7 +2323,7 @@ zfcp_erp_port_strategy_open_common(struct zfcp_erp_action *erp_action) | |||
| 2318 | atomic_set_mask(ZFCP_STATUS_COMMON_RUNNING, | 2323 | atomic_set_mask(ZFCP_STATUS_COMMON_RUNNING, |
| 2319 | &adapter->nameserver_port->status); | 2324 | &adapter->nameserver_port->status); |
| 2320 | if (zfcp_erp_port_reopen(adapter->nameserver_port, 0, | 2325 | if (zfcp_erp_port_reopen(adapter->nameserver_port, 0, |
| 2321 | 77, (u64)erp_action) >= 0) { | 2326 | 77, erp_action) >= 0) { |
| 2322 | erp_action->step = | 2327 | erp_action->step = |
| 2323 | ZFCP_ERP_STEP_NAMESERVER_OPEN; | 2328 | ZFCP_ERP_STEP_NAMESERVER_OPEN; |
| 2324 | retval = ZFCP_ERP_CONTINUES; | 2329 | retval = ZFCP_ERP_CONTINUES; |
| @@ -2349,7 +2354,7 @@ zfcp_erp_port_strategy_open_common(struct zfcp_erp_action *erp_action) | |||
| 2349 | "for port 0x%016Lx " | 2354 | "for port 0x%016Lx " |
| 2350 | "(misconfigured WWPN?)\n", | 2355 | "(misconfigured WWPN?)\n", |
| 2351 | port->wwpn); | 2356 | port->wwpn); |
| 2352 | zfcp_erp_port_failed(port, 26, 0); | 2357 | zfcp_erp_port_failed(port, 26, NULL); |
| 2353 | retval = ZFCP_ERP_EXIT; | 2358 | retval = ZFCP_ERP_EXIT; |
| 2354 | } else { | 2359 | } else { |
| 2355 | ZFCP_LOG_DEBUG("nameserver look-up failed for " | 2360 | ZFCP_LOG_DEBUG("nameserver look-up failed for " |
| @@ -2449,7 +2454,8 @@ zfcp_erp_port_strategy_open_nameserver_wakeup(struct zfcp_erp_action | |||
| 2449 | if (atomic_test_mask( | 2454 | if (atomic_test_mask( |
| 2450 | ZFCP_STATUS_COMMON_ERP_FAILED, | 2455 | ZFCP_STATUS_COMMON_ERP_FAILED, |
| 2451 | &adapter->nameserver_port->status)) | 2456 | &adapter->nameserver_port->status)) |
| 2452 | zfcp_erp_port_failed(erp_action->port, 27, 0); | 2457 | zfcp_erp_port_failed(erp_action->port, 27, |
| 2458 | NULL); | ||
| 2453 | zfcp_erp_action_ready(erp_action); | 2459 | zfcp_erp_action_ready(erp_action); |
| 2454 | } | 2460 | } |
| 2455 | } | 2461 | } |
| @@ -2745,7 +2751,7 @@ void zfcp_erp_start_timer(struct zfcp_fsf_req *fsf_req) | |||
| 2745 | */ | 2751 | */ |
| 2746 | static int zfcp_erp_action_enqueue(int want, struct zfcp_adapter *adapter, | 2752 | static int zfcp_erp_action_enqueue(int want, struct zfcp_adapter *adapter, |
| 2747 | struct zfcp_port *port, | 2753 | struct zfcp_port *port, |
| 2748 | struct zfcp_unit *unit, u8 id, u64 ref) | 2754 | struct zfcp_unit *unit, u8 id, void *ref) |
| 2749 | { | 2755 | { |
| 2750 | int retval = 1, need = want; | 2756 | int retval = 1, need = want; |
| 2751 | struct zfcp_erp_action *erp_action = NULL; | 2757 | struct zfcp_erp_action *erp_action = NULL; |
| @@ -2888,7 +2894,7 @@ static int zfcp_erp_action_enqueue(int want, struct zfcp_adapter *adapter, | |||
| 2888 | zfcp_rec_dbf_event_thread(1, adapter, 0); | 2894 | zfcp_rec_dbf_event_thread(1, adapter, 0); |
| 2889 | retval = 0; | 2895 | retval = 0; |
| 2890 | out: | 2896 | out: |
| 2891 | zfcp_rec_dbf_event_trigger(id, ref, want, need, (u64)erp_action, | 2897 | zfcp_rec_dbf_event_trigger(id, ref, want, need, erp_action, |
| 2892 | adapter, port, unit); | 2898 | adapter, port, unit); |
| 2893 | return retval; | 2899 | return retval; |
| 2894 | } | 2900 | } |
| @@ -3048,7 +3054,7 @@ static void zfcp_erp_action_to_ready(struct zfcp_erp_action *erp_action) | |||
| 3048 | zfcp_rec_dbf_event_action(146, erp_action); | 3054 | zfcp_rec_dbf_event_action(146, erp_action); |
| 3049 | } | 3055 | } |
| 3050 | 3056 | ||
| 3051 | void zfcp_erp_port_boxed(struct zfcp_port *port, u8 id, u64 ref) | 3057 | void zfcp_erp_port_boxed(struct zfcp_port *port, u8 id, void *ref) |
| 3052 | { | 3058 | { |
| 3053 | unsigned long flags; | 3059 | unsigned long flags; |
| 3054 | 3060 | ||
| @@ -3059,14 +3065,14 @@ void zfcp_erp_port_boxed(struct zfcp_port *port, u8 id, u64 ref) | |||
| 3059 | zfcp_erp_port_reopen(port, ZFCP_STATUS_COMMON_ERP_FAILED, id, ref); | 3065 | zfcp_erp_port_reopen(port, ZFCP_STATUS_COMMON_ERP_FAILED, id, ref); |
| 3060 | } | 3066 | } |
| 3061 | 3067 | ||
| 3062 | void zfcp_erp_unit_boxed(struct zfcp_unit *unit, u8 id, u64 ref) | 3068 | void zfcp_erp_unit_boxed(struct zfcp_unit *unit, u8 id, void *ref) |
| 3063 | { | 3069 | { |
| 3064 | zfcp_erp_modify_unit_status(unit, id, ref, | 3070 | zfcp_erp_modify_unit_status(unit, id, ref, |
| 3065 | ZFCP_STATUS_COMMON_ACCESS_BOXED, ZFCP_SET); | 3071 | ZFCP_STATUS_COMMON_ACCESS_BOXED, ZFCP_SET); |
| 3066 | zfcp_erp_unit_reopen(unit, ZFCP_STATUS_COMMON_ERP_FAILED, id, ref); | 3072 | zfcp_erp_unit_reopen(unit, ZFCP_STATUS_COMMON_ERP_FAILED, id, ref); |
| 3067 | } | 3073 | } |
| 3068 | 3074 | ||
| 3069 | void zfcp_erp_port_access_denied(struct zfcp_port *port, u8 id, u64 ref) | 3075 | void zfcp_erp_port_access_denied(struct zfcp_port *port, u8 id, void *ref) |
| 3070 | { | 3076 | { |
| 3071 | unsigned long flags; | 3077 | unsigned long flags; |
| 3072 | 3078 | ||
| @@ -3077,7 +3083,7 @@ void zfcp_erp_port_access_denied(struct zfcp_port *port, u8 id, u64 ref) | |||
| 3077 | read_unlock_irqrestore(&zfcp_data.config_lock, flags); | 3083 | read_unlock_irqrestore(&zfcp_data.config_lock, flags); |
| 3078 | } | 3084 | } |
| 3079 | 3085 | ||
| 3080 | void zfcp_erp_unit_access_denied(struct zfcp_unit *unit, u8 id, u64 ref) | 3086 | void zfcp_erp_unit_access_denied(struct zfcp_unit *unit, u8 id, void *ref) |
| 3081 | { | 3087 | { |
| 3082 | zfcp_erp_modify_unit_status(unit, id, ref, | 3088 | zfcp_erp_modify_unit_status(unit, id, ref, |
| 3083 | ZFCP_STATUS_COMMON_ERP_FAILED | | 3089 | ZFCP_STATUS_COMMON_ERP_FAILED | |
| @@ -3085,7 +3091,7 @@ void zfcp_erp_unit_access_denied(struct zfcp_unit *unit, u8 id, u64 ref) | |||
| 3085 | } | 3091 | } |
| 3086 | 3092 | ||
| 3087 | void zfcp_erp_adapter_access_changed(struct zfcp_adapter *adapter, u8 id, | 3093 | void zfcp_erp_adapter_access_changed(struct zfcp_adapter *adapter, u8 id, |
| 3088 | u64 ref) | 3094 | void *ref) |
| 3089 | { | 3095 | { |
| 3090 | struct zfcp_port *port; | 3096 | struct zfcp_port *port; |
| 3091 | unsigned long flags; | 3097 | unsigned long flags; |
| @@ -3102,7 +3108,7 @@ void zfcp_erp_adapter_access_changed(struct zfcp_adapter *adapter, u8 id, | |||
| 3102 | read_unlock_irqrestore(&zfcp_data.config_lock, flags); | 3108 | read_unlock_irqrestore(&zfcp_data.config_lock, flags); |
| 3103 | } | 3109 | } |
| 3104 | 3110 | ||
| 3105 | void zfcp_erp_port_access_changed(struct zfcp_port *port, u8 id, u64 ref) | 3111 | void zfcp_erp_port_access_changed(struct zfcp_port *port, u8 id, void *ref) |
| 3106 | { | 3112 | { |
| 3107 | struct zfcp_adapter *adapter = port->adapter; | 3113 | struct zfcp_adapter *adapter = port->adapter; |
| 3108 | struct zfcp_unit *unit; | 3114 | struct zfcp_unit *unit; |
| @@ -3126,7 +3132,7 @@ void zfcp_erp_port_access_changed(struct zfcp_port *port, u8 id, u64 ref) | |||
| 3126 | zfcp_get_busid_by_adapter(adapter), port->wwpn); | 3132 | zfcp_get_busid_by_adapter(adapter), port->wwpn); |
| 3127 | } | 3133 | } |
| 3128 | 3134 | ||
| 3129 | void zfcp_erp_unit_access_changed(struct zfcp_unit *unit, u8 id, u64 ref) | 3135 | void zfcp_erp_unit_access_changed(struct zfcp_unit *unit, u8 id, void *ref) |
| 3130 | { | 3136 | { |
| 3131 | struct zfcp_adapter *adapter = unit->port->adapter; | 3137 | struct zfcp_adapter *adapter = unit->port->adapter; |
| 3132 | 3138 | ||
diff --git a/drivers/s390/scsi/zfcp_ext.h b/drivers/s390/scsi/zfcp_ext.h index 6de0147d84d8..6abf178fda5d 100644 --- a/drivers/s390/scsi/zfcp_ext.h +++ b/drivers/s390/scsi/zfcp_ext.h | |||
| @@ -131,23 +131,25 @@ extern int zfcp_scsi_command_sync(struct zfcp_unit *, struct scsi_cmnd *, int); | |||
| 131 | extern struct fc_function_template zfcp_transport_functions; | 131 | extern struct fc_function_template zfcp_transport_functions; |
| 132 | 132 | ||
| 133 | /******************************** ERP ****************************************/ | 133 | /******************************** ERP ****************************************/ |
| 134 | extern void zfcp_erp_modify_adapter_status(struct zfcp_adapter *, u8, u64, u32, | 134 | extern void zfcp_erp_modify_adapter_status(struct zfcp_adapter *, u8, void *, |
| 135 | int); | 135 | u32, int); |
| 136 | extern int zfcp_erp_adapter_reopen(struct zfcp_adapter *, int, u8, u64); | 136 | extern int zfcp_erp_adapter_reopen(struct zfcp_adapter *, int, u8, void *); |
| 137 | extern int zfcp_erp_adapter_shutdown(struct zfcp_adapter *, int, u8, u64); | 137 | extern int zfcp_erp_adapter_shutdown(struct zfcp_adapter *, int, u8, void *); |
| 138 | extern void zfcp_erp_adapter_failed(struct zfcp_adapter *, u8, u64); | 138 | extern void zfcp_erp_adapter_failed(struct zfcp_adapter *, u8, void *); |
| 139 | 139 | ||
| 140 | extern void zfcp_erp_modify_port_status(struct zfcp_port *, u8, u64, u32, int); | 140 | extern void zfcp_erp_modify_port_status(struct zfcp_port *, u8, void *, u32, |
| 141 | extern int zfcp_erp_port_reopen(struct zfcp_port *, int, u8, u64); | 141 | int); |
| 142 | extern int zfcp_erp_port_shutdown(struct zfcp_port *, int, u8, u64); | 142 | extern int zfcp_erp_port_reopen(struct zfcp_port *, int, u8, void *); |
| 143 | extern int zfcp_erp_port_forced_reopen(struct zfcp_port *, int, u8, u64); | 143 | extern int zfcp_erp_port_shutdown(struct zfcp_port *, int, u8, void *); |
| 144 | extern void zfcp_erp_port_failed(struct zfcp_port *, u8, u64); | 144 | extern int zfcp_erp_port_forced_reopen(struct zfcp_port *, int, u8, void *); |
| 145 | extern int zfcp_erp_port_reopen_all(struct zfcp_adapter *, int, u8, u64); | 145 | extern void zfcp_erp_port_failed(struct zfcp_port *, u8, void *); |
| 146 | 146 | extern int zfcp_erp_port_reopen_all(struct zfcp_adapter *, int, u8, void *); | |
| 147 | extern void zfcp_erp_modify_unit_status(struct zfcp_unit *, u8, u64, u32, int); | 147 | |
| 148 | extern int zfcp_erp_unit_reopen(struct zfcp_unit *, int, u8, u64); | 148 | extern void zfcp_erp_modify_unit_status(struct zfcp_unit *, u8, void *, u32, |
| 149 | extern int zfcp_erp_unit_shutdown(struct zfcp_unit *, int, u8, u64); | 149 | int); |
| 150 | extern void zfcp_erp_unit_failed(struct zfcp_unit *, u8, u64); | 150 | extern int zfcp_erp_unit_reopen(struct zfcp_unit *, int, u8, void *); |
| 151 | extern int zfcp_erp_unit_shutdown(struct zfcp_unit *, int, u8, void *); | ||
| 152 | extern void zfcp_erp_unit_failed(struct zfcp_unit *, u8, void *); | ||
| 151 | 153 | ||
| 152 | extern int zfcp_erp_thread_setup(struct zfcp_adapter *); | 154 | extern int zfcp_erp_thread_setup(struct zfcp_adapter *); |
| 153 | extern int zfcp_erp_thread_kill(struct zfcp_adapter *); | 155 | extern int zfcp_erp_thread_kill(struct zfcp_adapter *); |
| @@ -156,22 +158,22 @@ extern void zfcp_erp_async_handler(struct zfcp_erp_action *, unsigned long); | |||
| 156 | 158 | ||
| 157 | extern int zfcp_test_link(struct zfcp_port *); | 159 | extern int zfcp_test_link(struct zfcp_port *); |
| 158 | 160 | ||
| 159 | extern void zfcp_erp_port_boxed(struct zfcp_port *, u8 id, u64 ref); | 161 | extern void zfcp_erp_port_boxed(struct zfcp_port *, u8 id, void *ref); |
| 160 | extern void zfcp_erp_unit_boxed(struct zfcp_unit *, u8 id, u64 ref); | 162 | extern void zfcp_erp_unit_boxed(struct zfcp_unit *, u8 id, void *ref); |
| 161 | extern void zfcp_erp_port_access_denied(struct zfcp_port *, u8 id, u64 ref); | 163 | extern void zfcp_erp_port_access_denied(struct zfcp_port *, u8 id, void *ref); |
| 162 | extern void zfcp_erp_unit_access_denied(struct zfcp_unit *, u8 id, u64 ref); | 164 | extern void zfcp_erp_unit_access_denied(struct zfcp_unit *, u8 id, void *ref); |
| 163 | extern void zfcp_erp_adapter_access_changed(struct zfcp_adapter *, u8, u64); | 165 | extern void zfcp_erp_adapter_access_changed(struct zfcp_adapter *, u8, void *); |
| 164 | extern void zfcp_erp_port_access_changed(struct zfcp_port *, u8, u64); | 166 | extern void zfcp_erp_port_access_changed(struct zfcp_port *, u8, void *); |
| 165 | extern void zfcp_erp_unit_access_changed(struct zfcp_unit *, u8, u64); | 167 | extern void zfcp_erp_unit_access_changed(struct zfcp_unit *, u8, void *); |
| 166 | 168 | ||
| 167 | /******************************** AUX ****************************************/ | 169 | /******************************** AUX ****************************************/ |
| 168 | extern void zfcp_rec_dbf_event_thread(u8 id, struct zfcp_adapter *adapter, | 170 | extern void zfcp_rec_dbf_event_thread(u8 id, struct zfcp_adapter *adapter, |
| 169 | int lock); | 171 | int lock); |
| 170 | extern void zfcp_rec_dbf_event_adapter(u8 id, u64 ref, struct zfcp_adapter *); | 172 | extern void zfcp_rec_dbf_event_adapter(u8 id, void *ref, struct zfcp_adapter *); |
| 171 | extern void zfcp_rec_dbf_event_port(u8 id, u64 ref, struct zfcp_port *port); | 173 | extern void zfcp_rec_dbf_event_port(u8 id, void *ref, struct zfcp_port *port); |
| 172 | extern void zfcp_rec_dbf_event_unit(u8 id, u64 ref, struct zfcp_unit *unit); | 174 | extern void zfcp_rec_dbf_event_unit(u8 id, void *ref, struct zfcp_unit *unit); |
| 173 | extern void zfcp_rec_dbf_event_trigger(u8 id, u64 ref, u8 want, u8 need, | 175 | extern void zfcp_rec_dbf_event_trigger(u8 id, void *ref, u8 want, u8 need, |
| 174 | u64 action, struct zfcp_adapter *, | 176 | void *action, struct zfcp_adapter *, |
| 175 | struct zfcp_port *, struct zfcp_unit *); | 177 | struct zfcp_port *, struct zfcp_unit *); |
| 176 | extern void zfcp_rec_dbf_event_action(u8 id, struct zfcp_erp_action *); | 178 | extern void zfcp_rec_dbf_event_action(u8 id, struct zfcp_erp_action *); |
| 177 | 179 | ||
diff --git a/drivers/s390/scsi/zfcp_fsf.c b/drivers/s390/scsi/zfcp_fsf.c index b7aa9696ba60..3211dcc59543 100644 --- a/drivers/s390/scsi/zfcp_fsf.c +++ b/drivers/s390/scsi/zfcp_fsf.c | |||
| @@ -298,7 +298,7 @@ zfcp_fsf_protstatus_eval(struct zfcp_fsf_req *fsf_req) | |||
| 298 | zfcp_get_busid_by_adapter(adapter), | 298 | zfcp_get_busid_by_adapter(adapter), |
| 299 | prot_status_qual->version_error.fsf_version, | 299 | prot_status_qual->version_error.fsf_version, |
| 300 | ZFCP_QTCB_VERSION); | 300 | ZFCP_QTCB_VERSION); |
| 301 | zfcp_erp_adapter_shutdown(adapter, 0, 117, (u64)fsf_req); | 301 | zfcp_erp_adapter_shutdown(adapter, 0, 117, fsf_req); |
| 302 | fsf_req->status |= ZFCP_STATUS_FSFREQ_ERROR; | 302 | fsf_req->status |= ZFCP_STATUS_FSFREQ_ERROR; |
| 303 | break; | 303 | break; |
| 304 | 304 | ||
| @@ -309,7 +309,7 @@ zfcp_fsf_protstatus_eval(struct zfcp_fsf_req *fsf_req) | |||
| 309 | qtcb->prefix.req_seq_no, | 309 | qtcb->prefix.req_seq_no, |
| 310 | zfcp_get_busid_by_adapter(adapter), | 310 | zfcp_get_busid_by_adapter(adapter), |
| 311 | prot_status_qual->sequence_error.exp_req_seq_no); | 311 | prot_status_qual->sequence_error.exp_req_seq_no); |
| 312 | zfcp_erp_adapter_reopen(adapter, 0, 98, (u64)fsf_req); | 312 | zfcp_erp_adapter_reopen(adapter, 0, 98, fsf_req); |
| 313 | fsf_req->status |= ZFCP_STATUS_FSFREQ_RETRY; | 313 | fsf_req->status |= ZFCP_STATUS_FSFREQ_RETRY; |
| 314 | fsf_req->status |= ZFCP_STATUS_FSFREQ_ERROR; | 314 | fsf_req->status |= ZFCP_STATUS_FSFREQ_ERROR; |
| 315 | break; | 315 | break; |
| @@ -320,7 +320,7 @@ zfcp_fsf_protstatus_eval(struct zfcp_fsf_req *fsf_req) | |||
| 320 | "that used on adapter %s. " | 320 | "that used on adapter %s. " |
| 321 | "Stopping all operations on this adapter.\n", | 321 | "Stopping all operations on this adapter.\n", |
| 322 | zfcp_get_busid_by_adapter(adapter)); | 322 | zfcp_get_busid_by_adapter(adapter)); |
| 323 | zfcp_erp_adapter_shutdown(adapter, 0, 118, (u64)fsf_req); | 323 | zfcp_erp_adapter_shutdown(adapter, 0, 118, fsf_req); |
| 324 | fsf_req->status |= ZFCP_STATUS_FSFREQ_ERROR; | 324 | fsf_req->status |= ZFCP_STATUS_FSFREQ_ERROR; |
| 325 | break; | 325 | break; |
| 326 | 326 | ||
| @@ -337,7 +337,7 @@ zfcp_fsf_protstatus_eval(struct zfcp_fsf_req *fsf_req) | |||
| 337 | *(unsigned long long*) | 337 | *(unsigned long long*) |
| 338 | (&qtcb->bottom.support.req_handle), | 338 | (&qtcb->bottom.support.req_handle), |
| 339 | zfcp_get_busid_by_adapter(adapter)); | 339 | zfcp_get_busid_by_adapter(adapter)); |
| 340 | zfcp_erp_adapter_shutdown(adapter, 0, 78, (u64)fsf_req); | 340 | zfcp_erp_adapter_shutdown(adapter, 0, 78, fsf_req); |
| 341 | fsf_req->status |= ZFCP_STATUS_FSFREQ_ERROR; | 341 | fsf_req->status |= ZFCP_STATUS_FSFREQ_ERROR; |
| 342 | break; | 342 | break; |
| 343 | 343 | ||
| @@ -345,7 +345,7 @@ zfcp_fsf_protstatus_eval(struct zfcp_fsf_req *fsf_req) | |||
| 345 | zfcp_fsf_link_down_info_eval(fsf_req, 37, | 345 | zfcp_fsf_link_down_info_eval(fsf_req, 37, |
| 346 | &prot_status_qual->link_down_info); | 346 | &prot_status_qual->link_down_info); |
| 347 | /* FIXME: reopening adapter now? better wait for link up */ | 347 | /* FIXME: reopening adapter now? better wait for link up */ |
| 348 | zfcp_erp_adapter_reopen(adapter, 0, 79, (u64)fsf_req); | 348 | zfcp_erp_adapter_reopen(adapter, 0, 79, fsf_req); |
| 349 | fsf_req->status |= ZFCP_STATUS_FSFREQ_ERROR; | 349 | fsf_req->status |= ZFCP_STATUS_FSFREQ_ERROR; |
| 350 | break; | 350 | break; |
| 351 | 351 | ||
| @@ -355,13 +355,13 @@ zfcp_fsf_protstatus_eval(struct zfcp_fsf_req *fsf_req) | |||
| 355 | "Re-starting operations on this adapter.\n", | 355 | "Re-starting operations on this adapter.\n", |
| 356 | zfcp_get_busid_by_adapter(adapter)); | 356 | zfcp_get_busid_by_adapter(adapter)); |
| 357 | /* All ports should be marked as ready to run again */ | 357 | /* All ports should be marked as ready to run again */ |
| 358 | zfcp_erp_modify_adapter_status(adapter, 28, | 358 | zfcp_erp_modify_adapter_status(adapter, 28, NULL, |
| 359 | 0, ZFCP_STATUS_COMMON_RUNNING, | 359 | ZFCP_STATUS_COMMON_RUNNING, |
| 360 | ZFCP_SET); | 360 | ZFCP_SET); |
| 361 | zfcp_erp_adapter_reopen(adapter, | 361 | zfcp_erp_adapter_reopen(adapter, |
| 362 | ZFCP_STATUS_ADAPTER_LINK_UNPLUGGED | 362 | ZFCP_STATUS_ADAPTER_LINK_UNPLUGGED |
| 363 | | ZFCP_STATUS_COMMON_ERP_FAILED, | 363 | | ZFCP_STATUS_COMMON_ERP_FAILED, |
| 364 | 99, (u64)fsf_req); | 364 | 99, fsf_req); |
| 365 | fsf_req->status |= ZFCP_STATUS_FSFREQ_ERROR; | 365 | fsf_req->status |= ZFCP_STATUS_FSFREQ_ERROR; |
| 366 | break; | 366 | break; |
| 367 | 367 | ||
| @@ -371,7 +371,7 @@ zfcp_fsf_protstatus_eval(struct zfcp_fsf_req *fsf_req) | |||
| 371 | "Restarting all operations on this " | 371 | "Restarting all operations on this " |
| 372 | "adapter.\n", | 372 | "adapter.\n", |
| 373 | zfcp_get_busid_by_adapter(adapter)); | 373 | zfcp_get_busid_by_adapter(adapter)); |
| 374 | zfcp_erp_adapter_reopen(adapter, 0, 100, (u64)fsf_req); | 374 | zfcp_erp_adapter_reopen(adapter, 0, 100, fsf_req); |
| 375 | fsf_req->status |= ZFCP_STATUS_FSFREQ_RETRY; | 375 | fsf_req->status |= ZFCP_STATUS_FSFREQ_RETRY; |
| 376 | fsf_req->status |= ZFCP_STATUS_FSFREQ_ERROR; | 376 | fsf_req->status |= ZFCP_STATUS_FSFREQ_ERROR; |
| 377 | break; | 377 | break; |
| @@ -384,7 +384,7 @@ zfcp_fsf_protstatus_eval(struct zfcp_fsf_req *fsf_req) | |||
| 384 | "(debug info 0x%x).\n", | 384 | "(debug info 0x%x).\n", |
| 385 | zfcp_get_busid_by_adapter(adapter), | 385 | zfcp_get_busid_by_adapter(adapter), |
| 386 | qtcb->prefix.prot_status); | 386 | qtcb->prefix.prot_status); |
| 387 | zfcp_erp_adapter_shutdown(adapter, 0, 119, (u64)fsf_req); | 387 | zfcp_erp_adapter_shutdown(adapter, 0, 119, fsf_req); |
| 388 | fsf_req->status |= ZFCP_STATUS_FSFREQ_ERROR; | 388 | fsf_req->status |= ZFCP_STATUS_FSFREQ_ERROR; |
| 389 | } | 389 | } |
| 390 | 390 | ||
| @@ -423,8 +423,7 @@ zfcp_fsf_fsfstatus_eval(struct zfcp_fsf_req *fsf_req) | |||
| 423 | "(debug info 0x%x).\n", | 423 | "(debug info 0x%x).\n", |
| 424 | zfcp_get_busid_by_adapter(fsf_req->adapter), | 424 | zfcp_get_busid_by_adapter(fsf_req->adapter), |
| 425 | fsf_req->qtcb->header.fsf_command); | 425 | fsf_req->qtcb->header.fsf_command); |
| 426 | zfcp_erp_adapter_shutdown(fsf_req->adapter, 0, 120, | 426 | zfcp_erp_adapter_shutdown(fsf_req->adapter, 0, 120, fsf_req); |
| 427 | (u64)fsf_req); | ||
| 428 | fsf_req->status |= ZFCP_STATUS_FSFREQ_ERROR; | 427 | fsf_req->status |= ZFCP_STATUS_FSFREQ_ERROR; |
| 429 | break; | 428 | break; |
| 430 | 429 | ||
| @@ -478,8 +477,7 @@ zfcp_fsf_fsfstatus_qual_eval(struct zfcp_fsf_req *fsf_req) | |||
| 478 | "problem on the adapter %s " | 477 | "problem on the adapter %s " |
| 479 | "Stopping all operations on this adapter. ", | 478 | "Stopping all operations on this adapter. ", |
| 480 | zfcp_get_busid_by_adapter(fsf_req->adapter)); | 479 | zfcp_get_busid_by_adapter(fsf_req->adapter)); |
| 481 | zfcp_erp_adapter_shutdown(fsf_req->adapter, 0, 121, | 480 | zfcp_erp_adapter_shutdown(fsf_req->adapter, 0, 121, fsf_req); |
| 482 | (u64)fsf_req); | ||
| 483 | fsf_req->status |= ZFCP_STATUS_FSFREQ_ERROR; | 481 | fsf_req->status |= ZFCP_STATUS_FSFREQ_ERROR; |
| 484 | break; | 482 | break; |
| 485 | case FSF_SQ_ULP_PROGRAMMING_ERROR: | 483 | case FSF_SQ_ULP_PROGRAMMING_ERROR: |
| @@ -605,7 +603,7 @@ zfcp_fsf_link_down_info_eval(struct zfcp_fsf_req *fsf_req, u8 id, | |||
| 605 | link_down->vendor_specific_code); | 603 | link_down->vendor_specific_code); |
| 606 | 604 | ||
| 607 | out: | 605 | out: |
| 608 | zfcp_erp_adapter_failed(adapter, id, (u64)fsf_req); | 606 | zfcp_erp_adapter_failed(adapter, id, fsf_req); |
| 609 | } | 607 | } |
| 610 | 608 | ||
| 611 | /* | 609 | /* |
| @@ -799,11 +797,11 @@ zfcp_fsf_status_read_port_closed(struct zfcp_fsf_req *fsf_req) | |||
| 799 | switch (status_buffer->status_subtype) { | 797 | switch (status_buffer->status_subtype) { |
| 800 | 798 | ||
| 801 | case FSF_STATUS_READ_SUB_CLOSE_PHYS_PORT: | 799 | case FSF_STATUS_READ_SUB_CLOSE_PHYS_PORT: |
| 802 | zfcp_erp_port_reopen(port, 0, 101, (u64)fsf_req); | 800 | zfcp_erp_port_reopen(port, 0, 101, fsf_req); |
| 803 | break; | 801 | break; |
| 804 | 802 | ||
| 805 | case FSF_STATUS_READ_SUB_ERROR_PORT: | 803 | case FSF_STATUS_READ_SUB_ERROR_PORT: |
| 806 | zfcp_erp_port_shutdown(port, 0, 122, (u64)fsf_req); | 804 | zfcp_erp_port_shutdown(port, 0, 122, fsf_req); |
| 807 | break; | 805 | break; |
| 808 | 806 | ||
| 809 | default: | 807 | default: |
| @@ -929,13 +927,13 @@ zfcp_fsf_status_read_handler(struct zfcp_fsf_req *fsf_req) | |||
| 929 | "Restarting operations on this adapter\n", | 927 | "Restarting operations on this adapter\n", |
| 930 | zfcp_get_busid_by_adapter(adapter)); | 928 | zfcp_get_busid_by_adapter(adapter)); |
| 931 | /* All ports should be marked as ready to run again */ | 929 | /* All ports should be marked as ready to run again */ |
| 932 | zfcp_erp_modify_adapter_status(adapter, 30, 0, | 930 | zfcp_erp_modify_adapter_status(adapter, 30, NULL, |
| 933 | ZFCP_STATUS_COMMON_RUNNING, | 931 | ZFCP_STATUS_COMMON_RUNNING, |
| 934 | ZFCP_SET); | 932 | ZFCP_SET); |
| 935 | zfcp_erp_adapter_reopen(adapter, | 933 | zfcp_erp_adapter_reopen(adapter, |
| 936 | ZFCP_STATUS_ADAPTER_LINK_UNPLUGGED | 934 | ZFCP_STATUS_ADAPTER_LINK_UNPLUGGED |
| 937 | | ZFCP_STATUS_COMMON_ERP_FAILED, | 935 | | ZFCP_STATUS_COMMON_ERP_FAILED, |
| 938 | 102, (u64)fsf_req); | 936 | 102, fsf_req); |
| 939 | break; | 937 | break; |
| 940 | 938 | ||
| 941 | case FSF_STATUS_READ_NOTIFICATION_LOST: | 939 | case FSF_STATUS_READ_NOTIFICATION_LOST: |
| @@ -969,14 +967,13 @@ zfcp_fsf_status_read_handler(struct zfcp_fsf_req *fsf_req) | |||
| 969 | 967 | ||
| 970 | if (status_buffer->status_subtype & | 968 | if (status_buffer->status_subtype & |
| 971 | FSF_STATUS_READ_SUB_ACT_UPDATED) | 969 | FSF_STATUS_READ_SUB_ACT_UPDATED) |
| 972 | zfcp_erp_adapter_access_changed(adapter, 135, | 970 | zfcp_erp_adapter_access_changed(adapter, 135, fsf_req); |
| 973 | (u64)fsf_req); | ||
| 974 | break; | 971 | break; |
| 975 | 972 | ||
| 976 | case FSF_STATUS_READ_CFDC_UPDATED: | 973 | case FSF_STATUS_READ_CFDC_UPDATED: |
| 977 | ZFCP_LOG_NORMAL("CFDC has been updated on the adapter %s\n", | 974 | ZFCP_LOG_NORMAL("CFDC has been updated on the adapter %s\n", |
| 978 | zfcp_get_busid_by_adapter(adapter)); | 975 | zfcp_get_busid_by_adapter(adapter)); |
| 979 | zfcp_erp_adapter_access_changed(adapter, 136, (u64)fsf_req); | 976 | zfcp_erp_adapter_access_changed(adapter, 136, fsf_req); |
| 980 | break; | 977 | break; |
| 981 | 978 | ||
| 982 | case FSF_STATUS_READ_CFDC_HARDENED: | 979 | case FSF_STATUS_READ_CFDC_HARDENED: |
| @@ -1044,7 +1041,7 @@ zfcp_fsf_status_read_handler(struct zfcp_fsf_req *fsf_req) | |||
| 1044 | ZFCP_LOG_INFO("restart adapter %s due to status read " | 1041 | ZFCP_LOG_INFO("restart adapter %s due to status read " |
| 1045 | "buffer shortage\n", | 1042 | "buffer shortage\n", |
| 1046 | zfcp_get_busid_by_adapter(adapter)); | 1043 | zfcp_get_busid_by_adapter(adapter)); |
| 1047 | zfcp_erp_adapter_reopen(adapter, 0, 103, (u64)fsf_req); | 1044 | zfcp_erp_adapter_reopen(adapter, 0, 103, fsf_req); |
| 1048 | } | 1045 | } |
| 1049 | } | 1046 | } |
| 1050 | out: | 1047 | out: |
| @@ -1164,7 +1161,7 @@ zfcp_fsf_abort_fcp_command_handler(struct zfcp_fsf_req *new_fsf_req) | |||
| 1164 | sizeof (union fsf_status_qual)); | 1161 | sizeof (union fsf_status_qual)); |
| 1165 | /* Let's hope this sorts out the mess */ | 1162 | /* Let's hope this sorts out the mess */ |
| 1166 | zfcp_erp_adapter_reopen(unit->port->adapter, 0, 104, | 1163 | zfcp_erp_adapter_reopen(unit->port->adapter, 0, 104, |
| 1167 | (u64)new_fsf_req); | 1164 | new_fsf_req); |
| 1168 | new_fsf_req->status |= ZFCP_STATUS_FSFREQ_ERROR; | 1165 | new_fsf_req->status |= ZFCP_STATUS_FSFREQ_ERROR; |
| 1169 | } | 1166 | } |
| 1170 | break; | 1167 | break; |
| @@ -1192,8 +1189,7 @@ zfcp_fsf_abort_fcp_command_handler(struct zfcp_fsf_req *new_fsf_req) | |||
| 1192 | fsf_status_qual, | 1189 | fsf_status_qual, |
| 1193 | sizeof (union fsf_status_qual)); | 1190 | sizeof (union fsf_status_qual)); |
| 1194 | /* Let's hope this sorts out the mess */ | 1191 | /* Let's hope this sorts out the mess */ |
| 1195 | zfcp_erp_port_reopen(unit->port, 0, 105, | 1192 | zfcp_erp_port_reopen(unit->port, 0, 105, new_fsf_req); |
| 1196 | (u64)new_fsf_req); | ||
| 1197 | new_fsf_req->status |= ZFCP_STATUS_FSFREQ_ERROR; | 1193 | new_fsf_req->status |= ZFCP_STATUS_FSFREQ_ERROR; |
| 1198 | } | 1194 | } |
| 1199 | break; | 1195 | break; |
| @@ -1207,7 +1203,7 @@ zfcp_fsf_abort_fcp_command_handler(struct zfcp_fsf_req *new_fsf_req) | |||
| 1207 | ZFCP_LOG_INFO("Remote port 0x%016Lx on adapter %s needs to " | 1203 | ZFCP_LOG_INFO("Remote port 0x%016Lx on adapter %s needs to " |
| 1208 | "be reopened\n", unit->port->wwpn, | 1204 | "be reopened\n", unit->port->wwpn, |
| 1209 | zfcp_get_busid_by_unit(unit)); | 1205 | zfcp_get_busid_by_unit(unit)); |
| 1210 | zfcp_erp_port_boxed(unit->port, 47, (u64)new_fsf_req); | 1206 | zfcp_erp_port_boxed(unit->port, 47, new_fsf_req); |
| 1211 | new_fsf_req->status |= ZFCP_STATUS_FSFREQ_ERROR | 1207 | new_fsf_req->status |= ZFCP_STATUS_FSFREQ_ERROR |
| 1212 | | ZFCP_STATUS_FSFREQ_RETRY; | 1208 | | ZFCP_STATUS_FSFREQ_RETRY; |
| 1213 | break; | 1209 | break; |
| @@ -1218,7 +1214,7 @@ zfcp_fsf_abort_fcp_command_handler(struct zfcp_fsf_req *new_fsf_req) | |||
| 1218 | "to be reopened\n", | 1214 | "to be reopened\n", |
| 1219 | unit->fcp_lun, unit->port->wwpn, | 1215 | unit->fcp_lun, unit->port->wwpn, |
| 1220 | zfcp_get_busid_by_unit(unit)); | 1216 | zfcp_get_busid_by_unit(unit)); |
| 1221 | zfcp_erp_unit_boxed(unit, 48, (u64)new_fsf_req); | 1217 | zfcp_erp_unit_boxed(unit, 48, new_fsf_req); |
| 1222 | new_fsf_req->status |= ZFCP_STATUS_FSFREQ_ERROR | 1218 | new_fsf_req->status |= ZFCP_STATUS_FSFREQ_ERROR |
| 1223 | | ZFCP_STATUS_FSFREQ_RETRY; | 1219 | | ZFCP_STATUS_FSFREQ_RETRY; |
| 1224 | break; | 1220 | break; |
| @@ -1452,7 +1448,7 @@ zfcp_fsf_send_ct_handler(struct zfcp_fsf_req *fsf_req) | |||
| 1452 | zfcp_get_busid_by_port(port), | 1448 | zfcp_get_busid_by_port(port), |
| 1453 | ZFCP_FC_SERVICE_CLASS_DEFAULT); | 1449 | ZFCP_FC_SERVICE_CLASS_DEFAULT); |
| 1454 | /* stop operation for this adapter */ | 1450 | /* stop operation for this adapter */ |
| 1455 | zfcp_erp_adapter_shutdown(adapter, 0, 123, (u64)fsf_req); | 1451 | zfcp_erp_adapter_shutdown(adapter, 0, 123, fsf_req); |
| 1456 | fsf_req->status |= ZFCP_STATUS_FSFREQ_ERROR; | 1452 | fsf_req->status |= ZFCP_STATUS_FSFREQ_ERROR; |
| 1457 | break; | 1453 | break; |
| 1458 | 1454 | ||
| @@ -1492,7 +1488,7 @@ zfcp_fsf_send_ct_handler(struct zfcp_fsf_req *fsf_req) | |||
| 1492 | break; | 1488 | break; |
| 1493 | } | 1489 | } |
| 1494 | } | 1490 | } |
| 1495 | zfcp_erp_port_access_denied(port, 55, (u64)fsf_req); | 1491 | zfcp_erp_port_access_denied(port, 55, fsf_req); |
| 1496 | fsf_req->status |= ZFCP_STATUS_FSFREQ_ERROR; | 1492 | fsf_req->status |= ZFCP_STATUS_FSFREQ_ERROR; |
| 1497 | break; | 1493 | break; |
| 1498 | 1494 | ||
| @@ -1516,7 +1512,7 @@ zfcp_fsf_send_ct_handler(struct zfcp_fsf_req *fsf_req) | |||
| 1516 | ZFCP_HEX_DUMP(ZFCP_LOG_LEVEL_INFO, | 1512 | ZFCP_HEX_DUMP(ZFCP_LOG_LEVEL_INFO, |
| 1517 | (char *) &header->fsf_status_qual, | 1513 | (char *) &header->fsf_status_qual, |
| 1518 | sizeof (union fsf_status_qual)); | 1514 | sizeof (union fsf_status_qual)); |
| 1519 | zfcp_erp_adapter_reopen(adapter, 0, 106, (u64)fsf_req); | 1515 | zfcp_erp_adapter_reopen(adapter, 0, 106, fsf_req); |
| 1520 | fsf_req->status |= ZFCP_STATUS_FSFREQ_ERROR; | 1516 | fsf_req->status |= ZFCP_STATUS_FSFREQ_ERROR; |
| 1521 | break; | 1517 | break; |
| 1522 | 1518 | ||
| @@ -1524,7 +1520,7 @@ zfcp_fsf_send_ct_handler(struct zfcp_fsf_req *fsf_req) | |||
| 1524 | ZFCP_LOG_INFO("port needs to be reopened " | 1520 | ZFCP_LOG_INFO("port needs to be reopened " |
| 1525 | "(adapter %s, port d_id=0x%06x)\n", | 1521 | "(adapter %s, port d_id=0x%06x)\n", |
| 1526 | zfcp_get_busid_by_port(port), port->d_id); | 1522 | zfcp_get_busid_by_port(port), port->d_id); |
| 1527 | zfcp_erp_port_boxed(port, 49, (u64)fsf_req); | 1523 | zfcp_erp_port_boxed(port, 49, fsf_req); |
| 1528 | fsf_req->status |= ZFCP_STATUS_FSFREQ_ERROR | 1524 | fsf_req->status |= ZFCP_STATUS_FSFREQ_ERROR |
| 1529 | | ZFCP_STATUS_FSFREQ_RETRY; | 1525 | | ZFCP_STATUS_FSFREQ_RETRY; |
| 1530 | break; | 1526 | break; |
| @@ -1746,7 +1742,7 @@ static int zfcp_fsf_send_els_handler(struct zfcp_fsf_req *fsf_req) | |||
| 1746 | zfcp_get_busid_by_adapter(adapter), | 1742 | zfcp_get_busid_by_adapter(adapter), |
| 1747 | ZFCP_FC_SERVICE_CLASS_DEFAULT); | 1743 | ZFCP_FC_SERVICE_CLASS_DEFAULT); |
| 1748 | /* stop operation for this adapter */ | 1744 | /* stop operation for this adapter */ |
| 1749 | zfcp_erp_adapter_shutdown(adapter, 0, 124, (u64)fsf_req); | 1745 | zfcp_erp_adapter_shutdown(adapter, 0, 124, fsf_req); |
| 1750 | fsf_req->status |= ZFCP_STATUS_FSFREQ_ERROR; | 1746 | fsf_req->status |= ZFCP_STATUS_FSFREQ_ERROR; |
| 1751 | break; | 1747 | break; |
| 1752 | 1748 | ||
| @@ -1842,7 +1838,7 @@ static int zfcp_fsf_send_els_handler(struct zfcp_fsf_req *fsf_req) | |||
| 1842 | } | 1838 | } |
| 1843 | } | 1839 | } |
| 1844 | if (port != NULL) | 1840 | if (port != NULL) |
| 1845 | zfcp_erp_port_access_denied(port, 56, (u64)fsf_req); | 1841 | zfcp_erp_port_access_denied(port, 56, fsf_req); |
| 1846 | fsf_req->status |= ZFCP_STATUS_FSFREQ_ERROR; | 1842 | fsf_req->status |= ZFCP_STATUS_FSFREQ_ERROR; |
| 1847 | break; | 1843 | break; |
| 1848 | 1844 | ||
| @@ -2060,7 +2056,7 @@ zfcp_fsf_exchange_config_evaluate(struct zfcp_fsf_req *fsf_req, int xchg_ok) | |||
| 2060 | "versions in comparison to this device " | 2056 | "versions in comparison to this device " |
| 2061 | "driver (try updated device driver)\n", | 2057 | "driver (try updated device driver)\n", |
| 2062 | zfcp_get_busid_by_adapter(adapter)); | 2058 | zfcp_get_busid_by_adapter(adapter)); |
| 2063 | zfcp_erp_adapter_shutdown(adapter, 0, 125, (u64)fsf_req); | 2059 | zfcp_erp_adapter_shutdown(adapter, 0, 125, fsf_req); |
| 2064 | return -EIO; | 2060 | return -EIO; |
| 2065 | } | 2061 | } |
| 2066 | if (ZFCP_QTCB_VERSION > bottom->high_qtcb_version) { | 2062 | if (ZFCP_QTCB_VERSION > bottom->high_qtcb_version) { |
| @@ -2069,7 +2065,7 @@ zfcp_fsf_exchange_config_evaluate(struct zfcp_fsf_req *fsf_req, int xchg_ok) | |||
| 2069 | "versions than this device driver uses" | 2065 | "versions than this device driver uses" |
| 2070 | "(consider a microcode upgrade)\n", | 2066 | "(consider a microcode upgrade)\n", |
| 2071 | zfcp_get_busid_by_adapter(adapter)); | 2067 | zfcp_get_busid_by_adapter(adapter)); |
| 2072 | zfcp_erp_adapter_shutdown(adapter, 0, 126, (u64)fsf_req); | 2068 | zfcp_erp_adapter_shutdown(adapter, 0, 126, fsf_req); |
| 2073 | return -EIO; | 2069 | return -EIO; |
| 2074 | } | 2070 | } |
| 2075 | return 0; | 2071 | return 0; |
| @@ -2115,7 +2111,7 @@ zfcp_fsf_exchange_config_data_handler(struct zfcp_fsf_req *fsf_req) | |||
| 2115 | "topology detected at adapter %s " | 2111 | "topology detected at adapter %s " |
| 2116 | "unsupported, shutting down adapter\n", | 2112 | "unsupported, shutting down adapter\n", |
| 2117 | zfcp_get_busid_by_adapter(adapter)); | 2113 | zfcp_get_busid_by_adapter(adapter)); |
| 2118 | zfcp_erp_adapter_shutdown(adapter, 0, 127, (u64)fsf_req); | 2114 | zfcp_erp_adapter_shutdown(adapter, 0, 127, fsf_req); |
| 2119 | return -EIO; | 2115 | return -EIO; |
| 2120 | case FC_PORTTYPE_NPORT: | 2116 | case FC_PORTTYPE_NPORT: |
| 2121 | ZFCP_LOG_NORMAL("Switched fabric fibrechannel " | 2117 | ZFCP_LOG_NORMAL("Switched fabric fibrechannel " |
| @@ -2130,7 +2126,7 @@ zfcp_fsf_exchange_config_data_handler(struct zfcp_fsf_req *fsf_req) | |||
| 2130 | "of a type known to the zfcp " | 2126 | "of a type known to the zfcp " |
| 2131 | "driver, shutting down adapter\n", | 2127 | "driver, shutting down adapter\n", |
| 2132 | zfcp_get_busid_by_adapter(adapter)); | 2128 | zfcp_get_busid_by_adapter(adapter)); |
| 2133 | zfcp_erp_adapter_shutdown(adapter, 0, 128, (u64)fsf_req); | 2129 | zfcp_erp_adapter_shutdown(adapter, 0, 128, fsf_req); |
| 2134 | return -EIO; | 2130 | return -EIO; |
| 2135 | } | 2131 | } |
| 2136 | bottom = &qtcb->bottom.config; | 2132 | bottom = &qtcb->bottom.config; |
| @@ -2142,7 +2138,7 @@ zfcp_fsf_exchange_config_data_handler(struct zfcp_fsf_req *fsf_req) | |||
| 2142 | bottom->max_qtcb_size, | 2138 | bottom->max_qtcb_size, |
| 2143 | zfcp_get_busid_by_adapter(adapter), | 2139 | zfcp_get_busid_by_adapter(adapter), |
| 2144 | sizeof(struct fsf_qtcb)); | 2140 | sizeof(struct fsf_qtcb)); |
| 2145 | zfcp_erp_adapter_shutdown(adapter, 0, 129, (u64)fsf_req); | 2141 | zfcp_erp_adapter_shutdown(adapter, 0, 129, fsf_req); |
| 2146 | return -EIO; | 2142 | return -EIO; |
| 2147 | } | 2143 | } |
| 2148 | atomic_set_mask(ZFCP_STATUS_ADAPTER_XCONFIG_OK, | 2144 | atomic_set_mask(ZFCP_STATUS_ADAPTER_XCONFIG_OK, |
| @@ -2159,7 +2155,7 @@ zfcp_fsf_exchange_config_data_handler(struct zfcp_fsf_req *fsf_req) | |||
| 2159 | &qtcb->header.fsf_status_qual.link_down_info); | 2155 | &qtcb->header.fsf_status_qual.link_down_info); |
| 2160 | break; | 2156 | break; |
| 2161 | default: | 2157 | default: |
| 2162 | zfcp_erp_adapter_shutdown(adapter, 0, 130, (u64)fsf_req); | 2158 | zfcp_erp_adapter_shutdown(adapter, 0, 130, fsf_req); |
| 2163 | return -EIO; | 2159 | return -EIO; |
| 2164 | } | 2160 | } |
| 2165 | return 0; | 2161 | return 0; |
| @@ -2458,7 +2454,7 @@ zfcp_fsf_open_port_handler(struct zfcp_fsf_req *fsf_req) | |||
| 2458 | break; | 2454 | break; |
| 2459 | } | 2455 | } |
| 2460 | } | 2456 | } |
| 2461 | zfcp_erp_port_access_denied(port, 57, (u64)fsf_req); | 2457 | zfcp_erp_port_access_denied(port, 57, fsf_req); |
| 2462 | fsf_req->status |= ZFCP_STATUS_FSFREQ_ERROR; | 2458 | fsf_req->status |= ZFCP_STATUS_FSFREQ_ERROR; |
| 2463 | break; | 2459 | break; |
| 2464 | 2460 | ||
| @@ -2467,7 +2463,7 @@ zfcp_fsf_open_port_handler(struct zfcp_fsf_req *fsf_req) | |||
| 2467 | "The remote port 0x%016Lx on adapter %s " | 2463 | "The remote port 0x%016Lx on adapter %s " |
| 2468 | "could not be opened. Disabling it.\n", | 2464 | "could not be opened. Disabling it.\n", |
| 2469 | port->wwpn, zfcp_get_busid_by_port(port)); | 2465 | port->wwpn, zfcp_get_busid_by_port(port)); |
| 2470 | zfcp_erp_port_failed(port, 31, (u64)fsf_req); | 2466 | zfcp_erp_port_failed(port, 31, fsf_req); |
| 2471 | fsf_req->status |= ZFCP_STATUS_FSFREQ_ERROR; | 2467 | fsf_req->status |= ZFCP_STATUS_FSFREQ_ERROR; |
| 2472 | break; | 2468 | break; |
| 2473 | 2469 | ||
| @@ -2487,7 +2483,7 @@ zfcp_fsf_open_port_handler(struct zfcp_fsf_req *fsf_req) | |||
| 2487 | "Disabling it.\n", | 2483 | "Disabling it.\n", |
| 2488 | port->wwpn, | 2484 | port->wwpn, |
| 2489 | zfcp_get_busid_by_port(port)); | 2485 | zfcp_get_busid_by_port(port)); |
| 2490 | zfcp_erp_port_failed(port, 32, (u64)fsf_req); | 2486 | zfcp_erp_port_failed(port, 32, fsf_req); |
| 2491 | fsf_req->status |= ZFCP_STATUS_FSFREQ_ERROR; | 2487 | fsf_req->status |= ZFCP_STATUS_FSFREQ_ERROR; |
| 2492 | break; | 2488 | break; |
| 2493 | default: | 2489 | default: |
| @@ -2669,7 +2665,7 @@ zfcp_fsf_close_port_handler(struct zfcp_fsf_req *fsf_req) | |||
| 2669 | ZFCP_HEX_DUMP(ZFCP_LOG_LEVEL_DEBUG, | 2665 | ZFCP_HEX_DUMP(ZFCP_LOG_LEVEL_DEBUG, |
| 2670 | (char *) &fsf_req->qtcb->header.fsf_status_qual, | 2666 | (char *) &fsf_req->qtcb->header.fsf_status_qual, |
| 2671 | sizeof (union fsf_status_qual)); | 2667 | sizeof (union fsf_status_qual)); |
| 2672 | zfcp_erp_adapter_reopen(port->adapter, 0, 107, (u64)fsf_req); | 2668 | zfcp_erp_adapter_reopen(port->adapter, 0, 107, fsf_req); |
| 2673 | fsf_req->status |= ZFCP_STATUS_FSFREQ_ERROR; | 2669 | fsf_req->status |= ZFCP_STATUS_FSFREQ_ERROR; |
| 2674 | break; | 2670 | break; |
| 2675 | 2671 | ||
| @@ -2684,7 +2680,7 @@ zfcp_fsf_close_port_handler(struct zfcp_fsf_req *fsf_req) | |||
| 2684 | ZFCP_LOG_TRACE("remote port 0x016%Lx on adapter %s closed, " | 2680 | ZFCP_LOG_TRACE("remote port 0x016%Lx on adapter %s closed, " |
| 2685 | "port handle 0x%x\n", port->wwpn, | 2681 | "port handle 0x%x\n", port->wwpn, |
| 2686 | zfcp_get_busid_by_port(port), port->handle); | 2682 | zfcp_get_busid_by_port(port), port->handle); |
| 2687 | zfcp_erp_modify_port_status(port, 33, (u64)fsf_req, | 2683 | zfcp_erp_modify_port_status(port, 33, fsf_req, |
| 2688 | ZFCP_STATUS_COMMON_OPEN, | 2684 | ZFCP_STATUS_COMMON_OPEN, |
| 2689 | ZFCP_CLEAR); | 2685 | ZFCP_CLEAR); |
| 2690 | retval = 0; | 2686 | retval = 0; |
| @@ -2806,7 +2802,7 @@ zfcp_fsf_close_physical_port_handler(struct zfcp_fsf_req *fsf_req) | |||
| 2806 | ZFCP_HEX_DUMP(ZFCP_LOG_LEVEL_DEBUG, | 2802 | ZFCP_HEX_DUMP(ZFCP_LOG_LEVEL_DEBUG, |
| 2807 | (char *) &header->fsf_status_qual, | 2803 | (char *) &header->fsf_status_qual, |
| 2808 | sizeof (union fsf_status_qual)); | 2804 | sizeof (union fsf_status_qual)); |
| 2809 | zfcp_erp_adapter_reopen(port->adapter, 0, 108, (u64)fsf_req); | 2805 | zfcp_erp_adapter_reopen(port->adapter, 0, 108, fsf_req); |
| 2810 | fsf_req->status |= ZFCP_STATUS_FSFREQ_ERROR; | 2806 | fsf_req->status |= ZFCP_STATUS_FSFREQ_ERROR; |
| 2811 | break; | 2807 | break; |
| 2812 | 2808 | ||
| @@ -2827,7 +2823,7 @@ zfcp_fsf_close_physical_port_handler(struct zfcp_fsf_req *fsf_req) | |||
| 2827 | break; | 2823 | break; |
| 2828 | } | 2824 | } |
| 2829 | } | 2825 | } |
| 2830 | zfcp_erp_port_access_denied(port, 58, (u64)fsf_req); | 2826 | zfcp_erp_port_access_denied(port, 58, fsf_req); |
| 2831 | fsf_req->status |= ZFCP_STATUS_FSFREQ_ERROR; | 2827 | fsf_req->status |= ZFCP_STATUS_FSFREQ_ERROR; |
| 2832 | break; | 2828 | break; |
| 2833 | 2829 | ||
| @@ -2837,7 +2833,7 @@ zfcp_fsf_close_physical_port_handler(struct zfcp_fsf_req *fsf_req) | |||
| 2837 | "to close it physically.\n", | 2833 | "to close it physically.\n", |
| 2838 | port->wwpn, | 2834 | port->wwpn, |
| 2839 | zfcp_get_busid_by_port(port)); | 2835 | zfcp_get_busid_by_port(port)); |
| 2840 | zfcp_erp_port_boxed(port, 50, (u64)fsf_req); | 2836 | zfcp_erp_port_boxed(port, 50, fsf_req); |
| 2841 | fsf_req->status |= ZFCP_STATUS_FSFREQ_ERROR | | 2837 | fsf_req->status |= ZFCP_STATUS_FSFREQ_ERROR | |
| 2842 | ZFCP_STATUS_FSFREQ_RETRY; | 2838 | ZFCP_STATUS_FSFREQ_RETRY; |
| 2843 | 2839 | ||
| @@ -3016,8 +3012,7 @@ zfcp_fsf_open_unit_handler(struct zfcp_fsf_req *fsf_req) | |||
| 3016 | ZFCP_HEX_DUMP(ZFCP_LOG_LEVEL_DEBUG, | 3012 | ZFCP_HEX_DUMP(ZFCP_LOG_LEVEL_DEBUG, |
| 3017 | (char *) &header->fsf_status_qual, | 3013 | (char *) &header->fsf_status_qual, |
| 3018 | sizeof (union fsf_status_qual)); | 3014 | sizeof (union fsf_status_qual)); |
| 3019 | zfcp_erp_adapter_reopen(unit->port->adapter, 0, 109, | 3015 | zfcp_erp_adapter_reopen(unit->port->adapter, 0, 109, fsf_req); |
| 3020 | (u64)fsf_req); | ||
| 3021 | fsf_req->status |= ZFCP_STATUS_FSFREQ_ERROR; | 3016 | fsf_req->status |= ZFCP_STATUS_FSFREQ_ERROR; |
| 3022 | break; | 3017 | break; |
| 3023 | 3018 | ||
| @@ -3047,7 +3042,7 @@ zfcp_fsf_open_unit_handler(struct zfcp_fsf_req *fsf_req) | |||
| 3047 | break; | 3042 | break; |
| 3048 | } | 3043 | } |
| 3049 | } | 3044 | } |
| 3050 | zfcp_erp_unit_access_denied(unit, 59, (u64)fsf_req); | 3045 | zfcp_erp_unit_access_denied(unit, 59, fsf_req); |
| 3051 | atomic_clear_mask(ZFCP_STATUS_UNIT_SHARED, &unit->status); | 3046 | atomic_clear_mask(ZFCP_STATUS_UNIT_SHARED, &unit->status); |
| 3052 | atomic_clear_mask(ZFCP_STATUS_UNIT_READONLY, &unit->status); | 3047 | atomic_clear_mask(ZFCP_STATUS_UNIT_READONLY, &unit->status); |
| 3053 | fsf_req->status |= ZFCP_STATUS_FSFREQ_ERROR; | 3048 | fsf_req->status |= ZFCP_STATUS_FSFREQ_ERROR; |
| @@ -3057,7 +3052,7 @@ zfcp_fsf_open_unit_handler(struct zfcp_fsf_req *fsf_req) | |||
| 3057 | ZFCP_LOG_DEBUG("The remote port 0x%016Lx on adapter %s " | 3052 | ZFCP_LOG_DEBUG("The remote port 0x%016Lx on adapter %s " |
| 3058 | "needs to be reopened\n", | 3053 | "needs to be reopened\n", |
| 3059 | unit->port->wwpn, zfcp_get_busid_by_unit(unit)); | 3054 | unit->port->wwpn, zfcp_get_busid_by_unit(unit)); |
| 3060 | zfcp_erp_port_boxed(unit->port, 51, (u64)fsf_req); | 3055 | zfcp_erp_port_boxed(unit->port, 51, fsf_req); |
| 3061 | fsf_req->status |= ZFCP_STATUS_FSFREQ_ERROR | | 3056 | fsf_req->status |= ZFCP_STATUS_FSFREQ_ERROR | |
| 3062 | ZFCP_STATUS_FSFREQ_RETRY; | 3057 | ZFCP_STATUS_FSFREQ_RETRY; |
| 3063 | break; | 3058 | break; |
| @@ -3097,7 +3092,7 @@ zfcp_fsf_open_unit_handler(struct zfcp_fsf_req *fsf_req) | |||
| 3097 | ZFCP_HEX_DUMP(ZFCP_LOG_LEVEL_DEBUG, | 3092 | ZFCP_HEX_DUMP(ZFCP_LOG_LEVEL_DEBUG, |
| 3098 | (char *) &header->fsf_status_qual, | 3093 | (char *) &header->fsf_status_qual, |
| 3099 | sizeof (union fsf_status_qual)); | 3094 | sizeof (union fsf_status_qual)); |
| 3100 | zfcp_erp_unit_access_denied(unit, 60, (u64)fsf_req); | 3095 | zfcp_erp_unit_access_denied(unit, 60, fsf_req); |
| 3101 | atomic_clear_mask(ZFCP_STATUS_UNIT_SHARED, &unit->status); | 3096 | atomic_clear_mask(ZFCP_STATUS_UNIT_SHARED, &unit->status); |
| 3102 | atomic_clear_mask(ZFCP_STATUS_UNIT_READONLY, &unit->status); | 3097 | atomic_clear_mask(ZFCP_STATUS_UNIT_READONLY, &unit->status); |
| 3103 | fsf_req->status |= ZFCP_STATUS_FSFREQ_ERROR; | 3098 | fsf_req->status |= ZFCP_STATUS_FSFREQ_ERROR; |
| @@ -3111,7 +3106,7 @@ zfcp_fsf_open_unit_handler(struct zfcp_fsf_req *fsf_req) | |||
| 3111 | unit->fcp_lun, | 3106 | unit->fcp_lun, |
| 3112 | unit->port->wwpn, | 3107 | unit->port->wwpn, |
| 3113 | zfcp_get_busid_by_unit(unit)); | 3108 | zfcp_get_busid_by_unit(unit)); |
| 3114 | zfcp_erp_unit_failed(unit, 34, (u64)fsf_req); | 3109 | zfcp_erp_unit_failed(unit, 34, fsf_req); |
| 3115 | fsf_req->status |= ZFCP_STATUS_FSFREQ_ERROR; | 3110 | fsf_req->status |= ZFCP_STATUS_FSFREQ_ERROR; |
| 3116 | break; | 3111 | break; |
| 3117 | 3112 | ||
| @@ -3181,17 +3176,15 @@ zfcp_fsf_open_unit_handler(struct zfcp_fsf_req *fsf_req) | |||
| 3181 | if (exclusive && !readwrite) { | 3176 | if (exclusive && !readwrite) { |
| 3182 | ZFCP_LOG_NORMAL("exclusive access of read-only " | 3177 | ZFCP_LOG_NORMAL("exclusive access of read-only " |
| 3183 | "unit not supported\n"); | 3178 | "unit not supported\n"); |
| 3184 | zfcp_erp_unit_failed(unit, 35, (u64)fsf_req); | 3179 | zfcp_erp_unit_failed(unit, 35, fsf_req); |
| 3185 | fsf_req->status |= ZFCP_STATUS_FSFREQ_ERROR; | 3180 | fsf_req->status |= ZFCP_STATUS_FSFREQ_ERROR; |
| 3186 | zfcp_erp_unit_shutdown(unit, 0, 80, | 3181 | zfcp_erp_unit_shutdown(unit, 0, 80, fsf_req); |
| 3187 | (u64)fsf_req); | ||
| 3188 | } else if (!exclusive && readwrite) { | 3182 | } else if (!exclusive && readwrite) { |
| 3189 | ZFCP_LOG_NORMAL("shared access of read-write " | 3183 | ZFCP_LOG_NORMAL("shared access of read-write " |
| 3190 | "unit not supported\n"); | 3184 | "unit not supported\n"); |
| 3191 | zfcp_erp_unit_failed(unit, 36, (u64)fsf_req); | 3185 | zfcp_erp_unit_failed(unit, 36, fsf_req); |
| 3192 | fsf_req->status |= ZFCP_STATUS_FSFREQ_ERROR; | 3186 | fsf_req->status |= ZFCP_STATUS_FSFREQ_ERROR; |
| 3193 | zfcp_erp_unit_shutdown(unit, 0, 81, | 3187 | zfcp_erp_unit_shutdown(unit, 0, 81, fsf_req); |
| 3194 | (u64)fsf_req); | ||
| 3195 | } | 3188 | } |
| 3196 | } | 3189 | } |
| 3197 | 3190 | ||
| @@ -3314,8 +3307,7 @@ zfcp_fsf_close_unit_handler(struct zfcp_fsf_req *fsf_req) | |||
| 3314 | ZFCP_HEX_DUMP(ZFCP_LOG_LEVEL_DEBUG, | 3307 | ZFCP_HEX_DUMP(ZFCP_LOG_LEVEL_DEBUG, |
| 3315 | (char *) &fsf_req->qtcb->header.fsf_status_qual, | 3308 | (char *) &fsf_req->qtcb->header.fsf_status_qual, |
| 3316 | sizeof (union fsf_status_qual)); | 3309 | sizeof (union fsf_status_qual)); |
| 3317 | zfcp_erp_adapter_reopen(unit->port->adapter, 0, 110, | 3310 | zfcp_erp_adapter_reopen(unit->port->adapter, 0, 110, fsf_req); |
| 3318 | (u64)fsf_req); | ||
| 3319 | fsf_req->status |= ZFCP_STATUS_FSFREQ_ERROR; | 3311 | fsf_req->status |= ZFCP_STATUS_FSFREQ_ERROR; |
| 3320 | break; | 3312 | break; |
| 3321 | 3313 | ||
| @@ -3331,7 +3323,7 @@ zfcp_fsf_close_unit_handler(struct zfcp_fsf_req *fsf_req) | |||
| 3331 | ZFCP_HEX_DUMP(ZFCP_LOG_LEVEL_DEBUG, | 3323 | ZFCP_HEX_DUMP(ZFCP_LOG_LEVEL_DEBUG, |
| 3332 | (char *) &fsf_req->qtcb->header.fsf_status_qual, | 3324 | (char *) &fsf_req->qtcb->header.fsf_status_qual, |
| 3333 | sizeof (union fsf_status_qual)); | 3325 | sizeof (union fsf_status_qual)); |
| 3334 | zfcp_erp_port_reopen(unit->port, 0, 111, (u64)fsf_req); | 3326 | zfcp_erp_port_reopen(unit->port, 0, 111, fsf_req); |
| 3335 | fsf_req->status |= ZFCP_STATUS_FSFREQ_ERROR; | 3327 | fsf_req->status |= ZFCP_STATUS_FSFREQ_ERROR; |
| 3336 | break; | 3328 | break; |
| 3337 | 3329 | ||
| @@ -3340,7 +3332,7 @@ zfcp_fsf_close_unit_handler(struct zfcp_fsf_req *fsf_req) | |||
| 3340 | "needs to be reopened\n", | 3332 | "needs to be reopened\n", |
| 3341 | unit->port->wwpn, | 3333 | unit->port->wwpn, |
| 3342 | zfcp_get_busid_by_unit(unit)); | 3334 | zfcp_get_busid_by_unit(unit)); |
| 3343 | zfcp_erp_port_boxed(unit->port, 52, (u64)fsf_req); | 3335 | zfcp_erp_port_boxed(unit->port, 52, fsf_req); |
| 3344 | fsf_req->status |= ZFCP_STATUS_FSFREQ_ERROR | | 3336 | fsf_req->status |= ZFCP_STATUS_FSFREQ_ERROR | |
| 3345 | ZFCP_STATUS_FSFREQ_RETRY; | 3337 | ZFCP_STATUS_FSFREQ_RETRY; |
| 3346 | break; | 3338 | break; |
| @@ -3534,7 +3526,7 @@ zfcp_fsf_send_fcp_command_task(struct zfcp_adapter *adapter, | |||
| 3534 | zfcp_get_busid_by_unit(unit), | 3526 | zfcp_get_busid_by_unit(unit), |
| 3535 | unit->port->wwpn, | 3527 | unit->port->wwpn, |
| 3536 | unit->fcp_lun); | 3528 | unit->fcp_lun); |
| 3537 | zfcp_erp_unit_shutdown(unit, 0, 131, (u64)fsf_req); | 3529 | zfcp_erp_unit_shutdown(unit, 0, 131, fsf_req); |
| 3538 | retval = -EINVAL; | 3530 | retval = -EINVAL; |
| 3539 | } | 3531 | } |
| 3540 | goto no_fit; | 3532 | goto no_fit; |
| @@ -3692,8 +3684,7 @@ zfcp_fsf_send_fcp_command_handler(struct zfcp_fsf_req *fsf_req) | |||
| 3692 | ZFCP_HEX_DUMP(ZFCP_LOG_LEVEL_DEBUG, | 3684 | ZFCP_HEX_DUMP(ZFCP_LOG_LEVEL_DEBUG, |
| 3693 | (char *) &header->fsf_status_qual, | 3685 | (char *) &header->fsf_status_qual, |
| 3694 | sizeof (union fsf_status_qual)); | 3686 | sizeof (union fsf_status_qual)); |
| 3695 | zfcp_erp_adapter_reopen(unit->port->adapter, 0, 112, | 3687 | zfcp_erp_adapter_reopen(unit->port->adapter, 0, 112, fsf_req); |
| 3696 | (u64)fsf_req); | ||
| 3697 | fsf_req->status |= ZFCP_STATUS_FSFREQ_ERROR; | 3688 | fsf_req->status |= ZFCP_STATUS_FSFREQ_ERROR; |
| 3698 | break; | 3689 | break; |
| 3699 | 3690 | ||
| @@ -3709,7 +3700,7 @@ zfcp_fsf_send_fcp_command_handler(struct zfcp_fsf_req *fsf_req) | |||
| 3709 | ZFCP_HEX_DUMP(ZFCP_LOG_LEVEL_NORMAL, | 3700 | ZFCP_HEX_DUMP(ZFCP_LOG_LEVEL_NORMAL, |
| 3710 | (char *) &header->fsf_status_qual, | 3701 | (char *) &header->fsf_status_qual, |
| 3711 | sizeof (union fsf_status_qual)); | 3702 | sizeof (union fsf_status_qual)); |
| 3712 | zfcp_erp_port_reopen(unit->port, 0, 113, (u64)fsf_req); | 3703 | zfcp_erp_port_reopen(unit->port, 0, 113, fsf_req); |
| 3713 | fsf_req->status |= ZFCP_STATUS_FSFREQ_ERROR; | 3704 | fsf_req->status |= ZFCP_STATUS_FSFREQ_ERROR; |
| 3714 | break; | 3705 | break; |
| 3715 | 3706 | ||
| @@ -3725,8 +3716,7 @@ zfcp_fsf_send_fcp_command_handler(struct zfcp_fsf_req *fsf_req) | |||
| 3725 | ZFCP_HEX_DUMP(ZFCP_LOG_LEVEL_NORMAL, | 3716 | ZFCP_HEX_DUMP(ZFCP_LOG_LEVEL_NORMAL, |
| 3726 | (char *) &header->fsf_status_qual, | 3717 | (char *) &header->fsf_status_qual, |
| 3727 | sizeof (union fsf_status_qual)); | 3718 | sizeof (union fsf_status_qual)); |
| 3728 | zfcp_erp_adapter_reopen(unit->port->adapter, 0, 114, | 3719 | zfcp_erp_adapter_reopen(unit->port->adapter, 0, 114, fsf_req); |
| 3729 | (u64)fsf_req); | ||
| 3730 | fsf_req->status |= ZFCP_STATUS_FSFREQ_ERROR; | 3720 | fsf_req->status |= ZFCP_STATUS_FSFREQ_ERROR; |
| 3731 | break; | 3721 | break; |
| 3732 | 3722 | ||
| @@ -3736,8 +3726,7 @@ zfcp_fsf_send_fcp_command_handler(struct zfcp_fsf_req *fsf_req) | |||
| 3736 | zfcp_get_busid_by_unit(unit), | 3726 | zfcp_get_busid_by_unit(unit), |
| 3737 | ZFCP_FC_SERVICE_CLASS_DEFAULT); | 3727 | ZFCP_FC_SERVICE_CLASS_DEFAULT); |
| 3738 | /* stop operation for this adapter */ | 3728 | /* stop operation for this adapter */ |
| 3739 | zfcp_erp_adapter_shutdown(unit->port->adapter, 0, 132, | 3729 | zfcp_erp_adapter_shutdown(unit->port->adapter, 0, 132, fsf_req); |
| 3740 | (u64)fsf_req); | ||
| 3741 | fsf_req->status |= ZFCP_STATUS_FSFREQ_ERROR; | 3730 | fsf_req->status |= ZFCP_STATUS_FSFREQ_ERROR; |
| 3742 | break; | 3731 | break; |
| 3743 | 3732 | ||
| @@ -3753,7 +3742,7 @@ zfcp_fsf_send_fcp_command_handler(struct zfcp_fsf_req *fsf_req) | |||
| 3753 | ZFCP_HEX_DUMP(ZFCP_LOG_LEVEL_DEBUG, | 3742 | ZFCP_HEX_DUMP(ZFCP_LOG_LEVEL_DEBUG, |
| 3754 | (char *) &header->fsf_status_qual, | 3743 | (char *) &header->fsf_status_qual, |
| 3755 | sizeof (union fsf_status_qual)); | 3744 | sizeof (union fsf_status_qual)); |
| 3756 | zfcp_erp_port_reopen(unit->port, 0, 115, (u64)fsf_req); | 3745 | zfcp_erp_port_reopen(unit->port, 0, 115, fsf_req); |
| 3757 | fsf_req->status |= ZFCP_STATUS_FSFREQ_ERROR; | 3746 | fsf_req->status |= ZFCP_STATUS_FSFREQ_ERROR; |
| 3758 | break; | 3747 | break; |
| 3759 | 3748 | ||
| @@ -3775,7 +3764,7 @@ zfcp_fsf_send_fcp_command_handler(struct zfcp_fsf_req *fsf_req) | |||
| 3775 | break; | 3764 | break; |
| 3776 | } | 3765 | } |
| 3777 | } | 3766 | } |
| 3778 | zfcp_erp_unit_access_denied(unit, 61, (u64)fsf_req); | 3767 | zfcp_erp_unit_access_denied(unit, 61, fsf_req); |
| 3779 | fsf_req->status |= ZFCP_STATUS_FSFREQ_ERROR; | 3768 | fsf_req->status |= ZFCP_STATUS_FSFREQ_ERROR; |
| 3780 | break; | 3769 | break; |
| 3781 | 3770 | ||
| @@ -3788,8 +3777,7 @@ zfcp_fsf_send_fcp_command_handler(struct zfcp_fsf_req *fsf_req) | |||
| 3788 | zfcp_get_busid_by_unit(unit), | 3777 | zfcp_get_busid_by_unit(unit), |
| 3789 | fsf_req->qtcb->bottom.io.data_direction); | 3778 | fsf_req->qtcb->bottom.io.data_direction); |
| 3790 | /* stop operation for this adapter */ | 3779 | /* stop operation for this adapter */ |
| 3791 | zfcp_erp_adapter_shutdown(unit->port->adapter, 0, 133, | 3780 | zfcp_erp_adapter_shutdown(unit->port->adapter, 0, 133, fsf_req); |
| 3792 | (u64)fsf_req); | ||
| 3793 | fsf_req->status |= ZFCP_STATUS_FSFREQ_ERROR; | 3781 | fsf_req->status |= ZFCP_STATUS_FSFREQ_ERROR; |
| 3794 | break; | 3782 | break; |
| 3795 | 3783 | ||
| @@ -3802,8 +3790,7 @@ zfcp_fsf_send_fcp_command_handler(struct zfcp_fsf_req *fsf_req) | |||
| 3802 | zfcp_get_busid_by_unit(unit), | 3790 | zfcp_get_busid_by_unit(unit), |
| 3803 | fsf_req->qtcb->bottom.io.fcp_cmnd_length); | 3791 | fsf_req->qtcb->bottom.io.fcp_cmnd_length); |
| 3804 | /* stop operation for this adapter */ | 3792 | /* stop operation for this adapter */ |
| 3805 | zfcp_erp_adapter_shutdown(unit->port->adapter, 0, 134, | 3793 | zfcp_erp_adapter_shutdown(unit->port->adapter, 0, 134, fsf_req); |
| 3806 | (u64)fsf_req); | ||
| 3807 | fsf_req->status |= ZFCP_STATUS_FSFREQ_ERROR; | 3794 | fsf_req->status |= ZFCP_STATUS_FSFREQ_ERROR; |
| 3808 | break; | 3795 | break; |
| 3809 | 3796 | ||
| @@ -3811,7 +3798,7 @@ zfcp_fsf_send_fcp_command_handler(struct zfcp_fsf_req *fsf_req) | |||
| 3811 | ZFCP_LOG_DEBUG("The remote port 0x%016Lx on adapter %s " | 3798 | ZFCP_LOG_DEBUG("The remote port 0x%016Lx on adapter %s " |
| 3812 | "needs to be reopened\n", | 3799 | "needs to be reopened\n", |
| 3813 | unit->port->wwpn, zfcp_get_busid_by_unit(unit)); | 3800 | unit->port->wwpn, zfcp_get_busid_by_unit(unit)); |
| 3814 | zfcp_erp_port_boxed(unit->port, 53, (u64)fsf_req); | 3801 | zfcp_erp_port_boxed(unit->port, 53, fsf_req); |
| 3815 | fsf_req->status |= ZFCP_STATUS_FSFREQ_ERROR | | 3802 | fsf_req->status |= ZFCP_STATUS_FSFREQ_ERROR | |
| 3816 | ZFCP_STATUS_FSFREQ_RETRY; | 3803 | ZFCP_STATUS_FSFREQ_RETRY; |
| 3817 | break; | 3804 | break; |
| @@ -3821,7 +3808,7 @@ zfcp_fsf_send_fcp_command_handler(struct zfcp_fsf_req *fsf_req) | |||
| 3821 | "wwpn=0x%016Lx, fcp_lun=0x%016Lx)\n", | 3808 | "wwpn=0x%016Lx, fcp_lun=0x%016Lx)\n", |
| 3822 | zfcp_get_busid_by_unit(unit), | 3809 | zfcp_get_busid_by_unit(unit), |
| 3823 | unit->port->wwpn, unit->fcp_lun); | 3810 | unit->port->wwpn, unit->fcp_lun); |
| 3824 | zfcp_erp_unit_boxed(unit, 54, (u64)fsf_req); | 3811 | zfcp_erp_unit_boxed(unit, 54, fsf_req); |
| 3825 | fsf_req->status |= ZFCP_STATUS_FSFREQ_ERROR | 3812 | fsf_req->status |= ZFCP_STATUS_FSFREQ_ERROR |
| 3826 | | ZFCP_STATUS_FSFREQ_RETRY; | 3813 | | ZFCP_STATUS_FSFREQ_RETRY; |
| 3827 | break; | 3814 | break; |
| @@ -4681,7 +4668,7 @@ static int zfcp_fsf_req_send(struct zfcp_fsf_req *fsf_req) | |||
| 4681 | req_queue->free_index -= fsf_req->sbal_number; | 4668 | req_queue->free_index -= fsf_req->sbal_number; |
| 4682 | req_queue->free_index += QDIO_MAX_BUFFERS_PER_Q; | 4669 | req_queue->free_index += QDIO_MAX_BUFFERS_PER_Q; |
| 4683 | req_queue->free_index %= QDIO_MAX_BUFFERS_PER_Q; /* wrap */ | 4670 | req_queue->free_index %= QDIO_MAX_BUFFERS_PER_Q; /* wrap */ |
| 4684 | zfcp_erp_adapter_reopen(adapter, 0, 116, (u64)fsf_req); | 4671 | zfcp_erp_adapter_reopen(adapter, 0, 116, fsf_req); |
| 4685 | } else { | 4672 | } else { |
| 4686 | req_queue->distance_from_int = new_distance_from_int; | 4673 | req_queue->distance_from_int = new_distance_from_int; |
| 4687 | /* | 4674 | /* |
diff --git a/drivers/s390/scsi/zfcp_qdio.c b/drivers/s390/scsi/zfcp_qdio.c index 5d60a4116aff..8ca5f074c687 100644 --- a/drivers/s390/scsi/zfcp_qdio.c +++ b/drivers/s390/scsi/zfcp_qdio.c | |||
| @@ -176,7 +176,8 @@ zfcp_qdio_handler_error_check(struct zfcp_adapter *adapter, unsigned int status, | |||
| 176 | */ | 176 | */ |
| 177 | zfcp_erp_adapter_reopen(adapter, | 177 | zfcp_erp_adapter_reopen(adapter, |
| 178 | ZFCP_STATUS_ADAPTER_LINK_UNPLUGGED | | 178 | ZFCP_STATUS_ADAPTER_LINK_UNPLUGGED | |
| 179 | ZFCP_STATUS_COMMON_ERP_FAILED, 140, 0); | 179 | ZFCP_STATUS_COMMON_ERP_FAILED, 140, |
| 180 | NULL); | ||
| 180 | } | 181 | } |
| 181 | return retval; | 182 | return retval; |
| 182 | } | 183 | } |
diff --git a/drivers/s390/scsi/zfcp_scsi.c b/drivers/s390/scsi/zfcp_scsi.c index cd844b2ad7a1..3c9880e46e81 100644 --- a/drivers/s390/scsi/zfcp_scsi.c +++ b/drivers/s390/scsi/zfcp_scsi.c | |||
| @@ -185,7 +185,7 @@ static void zfcp_scsi_slave_destroy(struct scsi_device *sdpnt) | |||
| 185 | atomic_clear_mask(ZFCP_STATUS_UNIT_REGISTERED, &unit->status); | 185 | atomic_clear_mask(ZFCP_STATUS_UNIT_REGISTERED, &unit->status); |
| 186 | sdpnt->hostdata = NULL; | 186 | sdpnt->hostdata = NULL; |
| 187 | unit->device = NULL; | 187 | unit->device = NULL; |
| 188 | zfcp_erp_unit_failed(unit, 12, 0); | 188 | zfcp_erp_unit_failed(unit, 12, NULL); |
| 189 | zfcp_unit_put(unit); | 189 | zfcp_unit_put(unit); |
| 190 | } else | 190 | } else |
| 191 | ZFCP_LOG_NORMAL("bug: no unit associated with SCSI device at " | 191 | ZFCP_LOG_NORMAL("bug: no unit associated with SCSI device at " |
| @@ -529,7 +529,7 @@ static int zfcp_scsi_eh_host_reset_handler(struct scsi_cmnd *scpnt) | |||
| 529 | unit->fcp_lun, unit->port->wwpn, | 529 | unit->fcp_lun, unit->port->wwpn, |
| 530 | zfcp_get_busid_by_adapter(unit->port->adapter)); | 530 | zfcp_get_busid_by_adapter(unit->port->adapter)); |
| 531 | 531 | ||
| 532 | zfcp_erp_adapter_reopen(adapter, 0, 141, (u64)scpnt); | 532 | zfcp_erp_adapter_reopen(adapter, 0, 141, scpnt); |
| 533 | zfcp_erp_wait(adapter); | 533 | zfcp_erp_wait(adapter); |
| 534 | 534 | ||
| 535 | return SUCCESS; | 535 | return SUCCESS; |
diff --git a/drivers/s390/scsi/zfcp_sysfs_adapter.c b/drivers/s390/scsi/zfcp_sysfs_adapter.c index e0bbcc440a52..ccbba4dd3a77 100644 --- a/drivers/s390/scsi/zfcp_sysfs_adapter.c +++ b/drivers/s390/scsi/zfcp_sysfs_adapter.c | |||
| @@ -89,7 +89,7 @@ zfcp_sysfs_port_add_store(struct device *dev, struct device_attribute *attr, con | |||
| 89 | 89 | ||
| 90 | retval = 0; | 90 | retval = 0; |
| 91 | 91 | ||
| 92 | zfcp_erp_port_reopen(port, 0, 91, 0); | 92 | zfcp_erp_port_reopen(port, 0, 91, NULL); |
| 93 | zfcp_erp_wait(port->adapter); | 93 | zfcp_erp_wait(port->adapter); |
| 94 | zfcp_port_put(port); | 94 | zfcp_port_put(port); |
| 95 | out: | 95 | out: |
| @@ -147,7 +147,7 @@ zfcp_sysfs_port_remove_store(struct device *dev, struct device_attribute *attr, | |||
| 147 | goto out; | 147 | goto out; |
| 148 | } | 148 | } |
| 149 | 149 | ||
| 150 | zfcp_erp_port_shutdown(port, 0, 92, 0); | 150 | zfcp_erp_port_shutdown(port, 0, 92, NULL); |
| 151 | zfcp_erp_wait(adapter); | 151 | zfcp_erp_wait(adapter); |
| 152 | zfcp_port_put(port); | 152 | zfcp_port_put(port); |
| 153 | zfcp_port_dequeue(port); | 153 | zfcp_port_dequeue(port); |
| @@ -191,9 +191,10 @@ zfcp_sysfs_adapter_failed_store(struct device *dev, struct device_attribute *att | |||
| 191 | goto out; | 191 | goto out; |
| 192 | } | 192 | } |
| 193 | 193 | ||
| 194 | zfcp_erp_modify_adapter_status(adapter, 44, 0, | 194 | zfcp_erp_modify_adapter_status(adapter, 44, NULL, |
| 195 | ZFCP_STATUS_COMMON_RUNNING, ZFCP_SET); | 195 | ZFCP_STATUS_COMMON_RUNNING, ZFCP_SET); |
| 196 | zfcp_erp_adapter_reopen(adapter, ZFCP_STATUS_COMMON_ERP_FAILED, 93, 0); | 196 | zfcp_erp_adapter_reopen(adapter, ZFCP_STATUS_COMMON_ERP_FAILED, 93, |
| 197 | NULL); | ||
| 197 | zfcp_erp_wait(adapter); | 198 | zfcp_erp_wait(adapter); |
| 198 | out: | 199 | out: |
| 199 | up(&zfcp_data.config_sema); | 200 | up(&zfcp_data.config_sema); |
diff --git a/drivers/s390/scsi/zfcp_sysfs_port.c b/drivers/s390/scsi/zfcp_sysfs_port.c index 538195034c68..703c1b5cb602 100644 --- a/drivers/s390/scsi/zfcp_sysfs_port.c +++ b/drivers/s390/scsi/zfcp_sysfs_port.c | |||
| @@ -94,7 +94,7 @@ zfcp_sysfs_unit_add_store(struct device *dev, struct device_attribute *attr, con | |||
| 94 | 94 | ||
| 95 | retval = 0; | 95 | retval = 0; |
| 96 | 96 | ||
| 97 | zfcp_erp_unit_reopen(unit, 0, 94, 0); | 97 | zfcp_erp_unit_reopen(unit, 0, 94, NULL); |
| 98 | zfcp_erp_wait(unit->port->adapter); | 98 | zfcp_erp_wait(unit->port->adapter); |
| 99 | zfcp_unit_put(unit); | 99 | zfcp_unit_put(unit); |
| 100 | out: | 100 | out: |
| @@ -150,7 +150,7 @@ zfcp_sysfs_unit_remove_store(struct device *dev, struct device_attribute *attr, | |||
| 150 | goto out; | 150 | goto out; |
| 151 | } | 151 | } |
| 152 | 152 | ||
| 153 | zfcp_erp_unit_shutdown(unit, 0, 95, 0); | 153 | zfcp_erp_unit_shutdown(unit, 0, 95, NULL); |
| 154 | zfcp_erp_wait(unit->port->adapter); | 154 | zfcp_erp_wait(unit->port->adapter); |
| 155 | zfcp_unit_put(unit); | 155 | zfcp_unit_put(unit); |
| 156 | zfcp_unit_dequeue(unit); | 156 | zfcp_unit_dequeue(unit); |
| @@ -193,9 +193,9 @@ zfcp_sysfs_port_failed_store(struct device *dev, struct device_attribute *attr, | |||
| 193 | goto out; | 193 | goto out; |
| 194 | } | 194 | } |
| 195 | 195 | ||
| 196 | zfcp_erp_modify_port_status(port, 45, 0, | 196 | zfcp_erp_modify_port_status(port, 45, NULL, |
| 197 | ZFCP_STATUS_COMMON_RUNNING, ZFCP_SET); | 197 | ZFCP_STATUS_COMMON_RUNNING, ZFCP_SET); |
| 198 | zfcp_erp_port_reopen(port, ZFCP_STATUS_COMMON_ERP_FAILED, 96, 0); | 198 | zfcp_erp_port_reopen(port, ZFCP_STATUS_COMMON_ERP_FAILED, 96, NULL); |
| 199 | zfcp_erp_wait(port->adapter); | 199 | zfcp_erp_wait(port->adapter); |
| 200 | out: | 200 | out: |
| 201 | up(&zfcp_data.config_sema); | 201 | up(&zfcp_data.config_sema); |
diff --git a/drivers/s390/scsi/zfcp_sysfs_unit.c b/drivers/s390/scsi/zfcp_sysfs_unit.c index fd73568b44b4..80fb2c2cf48a 100644 --- a/drivers/s390/scsi/zfcp_sysfs_unit.c +++ b/drivers/s390/scsi/zfcp_sysfs_unit.c | |||
| @@ -94,9 +94,9 @@ zfcp_sysfs_unit_failed_store(struct device *dev, struct device_attribute *attr, | |||
| 94 | goto out; | 94 | goto out; |
| 95 | } | 95 | } |
| 96 | 96 | ||
| 97 | zfcp_erp_modify_unit_status(unit, 46, 0, | 97 | zfcp_erp_modify_unit_status(unit, 46, NULL, |
| 98 | ZFCP_STATUS_COMMON_RUNNING, ZFCP_SET); | 98 | ZFCP_STATUS_COMMON_RUNNING, ZFCP_SET); |
| 99 | zfcp_erp_unit_reopen(unit, ZFCP_STATUS_COMMON_ERP_FAILED, 97, 0); | 99 | zfcp_erp_unit_reopen(unit, ZFCP_STATUS_COMMON_ERP_FAILED, 97, NULL); |
| 100 | zfcp_erp_wait(unit->port->adapter); | 100 | zfcp_erp_wait(unit->port->adapter); |
| 101 | out: | 101 | out: |
| 102 | up(&zfcp_data.config_sema); | 102 | up(&zfcp_data.config_sema); |
