diff options
Diffstat (limited to 'drivers/s390')
-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); |