From 348447e85749120ad600a5c8e23b6bb7058b931d Mon Sep 17 00:00:00 2001 From: Martin Peschke Date: Thu, 27 Mar 2008 14:22:01 +0100 Subject: [SCSI] zfcp: Add trace records for recovery thread and its queues This patch writes trace records which provide information about the operation of the zfcp error recovery thread and the queues it works on. Signed-off-by: Martin Peschke Signed-off-by: Christof Schmitt Signed-off-by: James Bottomley --- drivers/s390/scsi/zfcp_ext.h | 3 +++ 1 file changed, 3 insertions(+) (limited to 'drivers/s390/scsi/zfcp_ext.h') diff --git a/drivers/s390/scsi/zfcp_ext.h b/drivers/s390/scsi/zfcp_ext.h index 06b1079b7f3d..f64951ba98c7 100644 --- a/drivers/s390/scsi/zfcp_ext.h +++ b/drivers/s390/scsi/zfcp_ext.h @@ -164,6 +164,9 @@ extern void zfcp_erp_port_access_changed(struct zfcp_port *); extern void zfcp_erp_unit_access_changed(struct zfcp_unit *); /******************************** AUX ****************************************/ +extern void zfcp_rec_dbf_event_thread(u8 id, struct zfcp_adapter *adapter, + int lock); + extern void zfcp_hba_dbf_event_fsf_response(struct zfcp_fsf_req *); extern void zfcp_hba_dbf_event_fsf_unsol(const char *, struct zfcp_adapter *, struct fsf_status_read_buffer *); -- cgit v1.2.1 From 698ec01635819c5ae60090bb4efcbeffc41642fb Mon Sep 17 00:00:00 2001 From: Martin Peschke Date: Thu, 27 Mar 2008 14:22:02 +0100 Subject: [SCSI] zfcp: Add traces for state changes. This patch writes a trace record which provides information about state changes for adapters, ports and units, e.g. target failure, targets becoming online, targets being temporarily blocked due to pending recovery, targets which have been recovered successfully etc. Signed-off-by: Martin Peschke Signed-off-by: Christof Schmitt Signed-off-by: James Bottomley --- drivers/s390/scsi/zfcp_ext.h | 24 ++++++++++++++---------- 1 file changed, 14 insertions(+), 10 deletions(-) (limited to 'drivers/s390/scsi/zfcp_ext.h') diff --git a/drivers/s390/scsi/zfcp_ext.h b/drivers/s390/scsi/zfcp_ext.h index f64951ba98c7..20ad6fde2e22 100644 --- a/drivers/s390/scsi/zfcp_ext.h +++ b/drivers/s390/scsi/zfcp_ext.h @@ -131,22 +131,23 @@ extern int zfcp_scsi_command_sync(struct zfcp_unit *, struct scsi_cmnd *, int); extern struct fc_function_template zfcp_transport_functions; /******************************** ERP ****************************************/ -extern void zfcp_erp_modify_adapter_status(struct zfcp_adapter *, u32, int); +extern void zfcp_erp_modify_adapter_status(struct zfcp_adapter *, u8, u64, u32, + int); extern int zfcp_erp_adapter_reopen(struct zfcp_adapter *, int); extern int zfcp_erp_adapter_shutdown(struct zfcp_adapter *, int); -extern void zfcp_erp_adapter_failed(struct zfcp_adapter *); +extern void zfcp_erp_adapter_failed(struct zfcp_adapter *, u8, u64); -extern void zfcp_erp_modify_port_status(struct zfcp_port *, u32, int); +extern void zfcp_erp_modify_port_status(struct zfcp_port *, u8, u64, u32, int); extern int zfcp_erp_port_reopen(struct zfcp_port *, int); extern int zfcp_erp_port_shutdown(struct zfcp_port *, int); extern int zfcp_erp_port_forced_reopen(struct zfcp_port *, int); -extern void zfcp_erp_port_failed(struct zfcp_port *); +extern void zfcp_erp_port_failed(struct zfcp_port *, u8, u64); extern int zfcp_erp_port_reopen_all(struct zfcp_adapter *, int); -extern void zfcp_erp_modify_unit_status(struct zfcp_unit *, u32, int); +extern void zfcp_erp_modify_unit_status(struct zfcp_unit *, u8, u64, u32, int); extern int zfcp_erp_unit_reopen(struct zfcp_unit *, int); extern int zfcp_erp_unit_shutdown(struct zfcp_unit *, int); -extern void zfcp_erp_unit_failed(struct zfcp_unit *); +extern void zfcp_erp_unit_failed(struct zfcp_unit *, u8, u64); extern int zfcp_erp_thread_setup(struct zfcp_adapter *); extern int zfcp_erp_thread_kill(struct zfcp_adapter *); @@ -155,10 +156,10 @@ extern void zfcp_erp_async_handler(struct zfcp_erp_action *, unsigned long); extern int zfcp_test_link(struct zfcp_port *); -extern void zfcp_erp_port_boxed(struct zfcp_port *); -extern void zfcp_erp_unit_boxed(struct zfcp_unit *); -extern void zfcp_erp_port_access_denied(struct zfcp_port *); -extern void zfcp_erp_unit_access_denied(struct zfcp_unit *); +extern void zfcp_erp_port_boxed(struct zfcp_port *, u8 id, u64 ref); +extern void zfcp_erp_unit_boxed(struct zfcp_unit *, u8 id, u64 ref); +extern void zfcp_erp_port_access_denied(struct zfcp_port *, u8 id, u64 ref); +extern void zfcp_erp_unit_access_denied(struct zfcp_unit *, u8 id, u64 ref); extern void zfcp_erp_adapter_access_changed(struct zfcp_adapter *); extern void zfcp_erp_port_access_changed(struct zfcp_port *); extern void zfcp_erp_unit_access_changed(struct zfcp_unit *); @@ -166,6 +167,9 @@ extern void zfcp_erp_unit_access_changed(struct zfcp_unit *); /******************************** AUX ****************************************/ extern void zfcp_rec_dbf_event_thread(u8 id, struct zfcp_adapter *adapter, int lock); +extern void zfcp_rec_dbf_event_adapter(u8 id, u64 ref, struct zfcp_adapter *); +extern void zfcp_rec_dbf_event_port(u8 id, u64 ref, struct zfcp_port *port); +extern void zfcp_rec_dbf_event_unit(u8 id, u64 ref, struct zfcp_unit *unit); extern void zfcp_hba_dbf_event_fsf_response(struct zfcp_fsf_req *); extern void zfcp_hba_dbf_event_fsf_unsol(const char *, struct zfcp_adapter *, -- cgit v1.2.1 From 9467a9b3efdd9041202f71cc270bda827a7ec777 Mon Sep 17 00:00:00 2001 From: Martin Peschke Date: Thu, 27 Mar 2008 14:22:03 +0100 Subject: [SCSI] zfcp: Trace all triggers of error recovery activity This patch allows any recovery event to be traced back to an exact cause, e.g. a particular request identified by an id (address). Signed-off-by: Martin Peschke Signed-off-by: Christof Schmitt Signed-off-by: James Bottomley --- drivers/s390/scsi/zfcp_ext.h | 25 ++++++++++++++----------- 1 file changed, 14 insertions(+), 11 deletions(-) (limited to 'drivers/s390/scsi/zfcp_ext.h') diff --git a/drivers/s390/scsi/zfcp_ext.h b/drivers/s390/scsi/zfcp_ext.h index 20ad6fde2e22..e10ed145baa7 100644 --- a/drivers/s390/scsi/zfcp_ext.h +++ b/drivers/s390/scsi/zfcp_ext.h @@ -133,20 +133,20 @@ extern struct fc_function_template zfcp_transport_functions; /******************************** ERP ****************************************/ extern void zfcp_erp_modify_adapter_status(struct zfcp_adapter *, u8, u64, u32, int); -extern int zfcp_erp_adapter_reopen(struct zfcp_adapter *, int); -extern int zfcp_erp_adapter_shutdown(struct zfcp_adapter *, int); +extern int zfcp_erp_adapter_reopen(struct zfcp_adapter *, int, u8, u64); +extern int zfcp_erp_adapter_shutdown(struct zfcp_adapter *, int, u8, u64); extern void zfcp_erp_adapter_failed(struct zfcp_adapter *, u8, u64); extern void zfcp_erp_modify_port_status(struct zfcp_port *, u8, u64, u32, int); -extern int zfcp_erp_port_reopen(struct zfcp_port *, int); -extern int zfcp_erp_port_shutdown(struct zfcp_port *, int); -extern int zfcp_erp_port_forced_reopen(struct zfcp_port *, int); +extern int zfcp_erp_port_reopen(struct zfcp_port *, int, u8, u64); +extern int zfcp_erp_port_shutdown(struct zfcp_port *, int, u8, u64); +extern int zfcp_erp_port_forced_reopen(struct zfcp_port *, int, u8, u64); extern void zfcp_erp_port_failed(struct zfcp_port *, u8, u64); -extern int zfcp_erp_port_reopen_all(struct zfcp_adapter *, int); +extern int zfcp_erp_port_reopen_all(struct zfcp_adapter *, int, u8, u64); extern void zfcp_erp_modify_unit_status(struct zfcp_unit *, u8, u64, u32, int); -extern int zfcp_erp_unit_reopen(struct zfcp_unit *, int); -extern int zfcp_erp_unit_shutdown(struct zfcp_unit *, int); +extern int zfcp_erp_unit_reopen(struct zfcp_unit *, int, u8, u64); +extern int zfcp_erp_unit_shutdown(struct zfcp_unit *, int, u8, u64); extern void zfcp_erp_unit_failed(struct zfcp_unit *, u8, u64); extern int zfcp_erp_thread_setup(struct zfcp_adapter *); @@ -160,9 +160,9 @@ extern void zfcp_erp_port_boxed(struct zfcp_port *, u8 id, u64 ref); extern void zfcp_erp_unit_boxed(struct zfcp_unit *, u8 id, u64 ref); extern void zfcp_erp_port_access_denied(struct zfcp_port *, u8 id, u64 ref); extern void zfcp_erp_unit_access_denied(struct zfcp_unit *, u8 id, u64 ref); -extern void zfcp_erp_adapter_access_changed(struct zfcp_adapter *); -extern void zfcp_erp_port_access_changed(struct zfcp_port *); -extern void zfcp_erp_unit_access_changed(struct zfcp_unit *); +extern void zfcp_erp_adapter_access_changed(struct zfcp_adapter *, u8, u64); +extern void zfcp_erp_port_access_changed(struct zfcp_port *, u8, u64); +extern void zfcp_erp_unit_access_changed(struct zfcp_unit *, u8, u64); /******************************** AUX ****************************************/ extern void zfcp_rec_dbf_event_thread(u8 id, struct zfcp_adapter *adapter, @@ -170,6 +170,9 @@ extern void zfcp_rec_dbf_event_thread(u8 id, struct zfcp_adapter *adapter, extern void zfcp_rec_dbf_event_adapter(u8 id, u64 ref, struct zfcp_adapter *); extern void zfcp_rec_dbf_event_port(u8 id, u64 ref, struct zfcp_port *port); extern void zfcp_rec_dbf_event_unit(u8 id, u64 ref, struct zfcp_unit *unit); +extern void zfcp_rec_dbf_event_trigger(u8 id, u64 ref, u8 want, u8 need, + u64 action, struct zfcp_adapter *, + struct zfcp_port *, struct zfcp_unit *); extern void zfcp_hba_dbf_event_fsf_response(struct zfcp_fsf_req *); extern void zfcp_hba_dbf_event_fsf_unsol(const char *, struct zfcp_adapter *, -- cgit v1.2.1 From 6f4f365e9c5d721c4d03ee8009dd6fab47feb045 Mon Sep 17 00:00:00 2001 From: Martin Peschke Date: Thu, 27 Mar 2008 14:22:04 +0100 Subject: [SCSI] zfcp: Add trace records for recovery actions. This patch writes trace records for various phases of a recovery action: action being created, action being processed, action continueing asynchronously, action gone, action timed out, action dismissed etc. Signed-off-by: Martin Peschke Signed-off-by: Christof Schmitt Signed-off-by: James Bottomley --- drivers/s390/scsi/zfcp_ext.h | 1 + 1 file changed, 1 insertion(+) (limited to 'drivers/s390/scsi/zfcp_ext.h') diff --git a/drivers/s390/scsi/zfcp_ext.h b/drivers/s390/scsi/zfcp_ext.h index e10ed145baa7..6de0147d84d8 100644 --- a/drivers/s390/scsi/zfcp_ext.h +++ b/drivers/s390/scsi/zfcp_ext.h @@ -173,6 +173,7 @@ extern void zfcp_rec_dbf_event_unit(u8 id, u64 ref, struct zfcp_unit *unit); extern void zfcp_rec_dbf_event_trigger(u8 id, u64 ref, u8 want, u8 need, u64 action, struct zfcp_adapter *, struct zfcp_port *, struct zfcp_unit *); +extern void zfcp_rec_dbf_event_action(u8 id, struct zfcp_erp_action *); extern void zfcp_hba_dbf_event_fsf_response(struct zfcp_fsf_req *); extern void zfcp_hba_dbf_event_fsf_unsol(const char *, struct zfcp_adapter *, -- cgit v1.2.1 From 1f6f7129ebac007629b28764bfa5147817682692 Mon Sep 17 00:00:00 2001 From: Martin Peschke Date: Fri, 18 Apr 2008 12:51:55 +0200 Subject: [SCSI] zfcp: fix 31 bit compile warnings MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit drivers/s390/scsi/zfcp_aux.c: In function ‘zfcp_fsf_incoming_els_rscn’: drivers/s390/scsi/zfcp_aux.c:1379: warning: cast from pointer to integer of different size drivers/s390/scsi/zfcp_aux.c: In function ‘zfcp_fsf_incoming_els_plogi’: drivers/s390/scsi/zfcp_aux.c:1432: warning: cast from pointer to integer of different size drivers/s390/scsi/zfcp_aux.c: In function ‘zfcp_fsf_incoming_els_logo’: drivers/s390/scsi/zfcp_aux.c:1457: warning: cast from pointer to integer of different size .. Just passing pointers rids us of these warnings and improves readability. Signed-off-by: Martin Peschke Signed-off-by: Christof Schmitt Signed-off-by: James Bottomley --- drivers/s390/scsi/zfcp_ext.h | 60 +++++++++++++++++++++++--------------------- 1 file changed, 31 insertions(+), 29 deletions(-) (limited to 'drivers/s390/scsi/zfcp_ext.h') 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); extern struct fc_function_template zfcp_transport_functions; /******************************** ERP ****************************************/ -extern void zfcp_erp_modify_adapter_status(struct zfcp_adapter *, u8, u64, u32, - int); -extern int zfcp_erp_adapter_reopen(struct zfcp_adapter *, int, u8, u64); -extern int zfcp_erp_adapter_shutdown(struct zfcp_adapter *, int, u8, u64); -extern void zfcp_erp_adapter_failed(struct zfcp_adapter *, u8, u64); - -extern void zfcp_erp_modify_port_status(struct zfcp_port *, u8, u64, u32, int); -extern int zfcp_erp_port_reopen(struct zfcp_port *, int, u8, u64); -extern int zfcp_erp_port_shutdown(struct zfcp_port *, int, u8, u64); -extern int zfcp_erp_port_forced_reopen(struct zfcp_port *, int, u8, u64); -extern void zfcp_erp_port_failed(struct zfcp_port *, u8, u64); -extern int zfcp_erp_port_reopen_all(struct zfcp_adapter *, int, u8, u64); - -extern void zfcp_erp_modify_unit_status(struct zfcp_unit *, u8, u64, u32, int); -extern int zfcp_erp_unit_reopen(struct zfcp_unit *, int, u8, u64); -extern int zfcp_erp_unit_shutdown(struct zfcp_unit *, int, u8, u64); -extern void zfcp_erp_unit_failed(struct zfcp_unit *, u8, u64); +extern void zfcp_erp_modify_adapter_status(struct zfcp_adapter *, u8, void *, + u32, int); +extern int zfcp_erp_adapter_reopen(struct zfcp_adapter *, int, u8, void *); +extern int zfcp_erp_adapter_shutdown(struct zfcp_adapter *, int, u8, void *); +extern void zfcp_erp_adapter_failed(struct zfcp_adapter *, u8, void *); + +extern void zfcp_erp_modify_port_status(struct zfcp_port *, u8, void *, u32, + int); +extern int zfcp_erp_port_reopen(struct zfcp_port *, int, u8, void *); +extern int zfcp_erp_port_shutdown(struct zfcp_port *, int, u8, void *); +extern int zfcp_erp_port_forced_reopen(struct zfcp_port *, int, u8, void *); +extern void zfcp_erp_port_failed(struct zfcp_port *, u8, void *); +extern int zfcp_erp_port_reopen_all(struct zfcp_adapter *, int, u8, void *); + +extern void zfcp_erp_modify_unit_status(struct zfcp_unit *, u8, void *, u32, + int); +extern int zfcp_erp_unit_reopen(struct zfcp_unit *, int, u8, void *); +extern int zfcp_erp_unit_shutdown(struct zfcp_unit *, int, u8, void *); +extern void zfcp_erp_unit_failed(struct zfcp_unit *, u8, void *); extern int zfcp_erp_thread_setup(struct zfcp_adapter *); 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); extern int zfcp_test_link(struct zfcp_port *); -extern void zfcp_erp_port_boxed(struct zfcp_port *, u8 id, u64 ref); -extern void zfcp_erp_unit_boxed(struct zfcp_unit *, u8 id, u64 ref); -extern void zfcp_erp_port_access_denied(struct zfcp_port *, u8 id, u64 ref); -extern void zfcp_erp_unit_access_denied(struct zfcp_unit *, u8 id, u64 ref); -extern void zfcp_erp_adapter_access_changed(struct zfcp_adapter *, u8, u64); -extern void zfcp_erp_port_access_changed(struct zfcp_port *, u8, u64); -extern void zfcp_erp_unit_access_changed(struct zfcp_unit *, u8, u64); +extern void zfcp_erp_port_boxed(struct zfcp_port *, u8 id, void *ref); +extern void zfcp_erp_unit_boxed(struct zfcp_unit *, u8 id, void *ref); +extern void zfcp_erp_port_access_denied(struct zfcp_port *, u8 id, void *ref); +extern void zfcp_erp_unit_access_denied(struct zfcp_unit *, u8 id, void *ref); +extern void zfcp_erp_adapter_access_changed(struct zfcp_adapter *, u8, void *); +extern void zfcp_erp_port_access_changed(struct zfcp_port *, u8, void *); +extern void zfcp_erp_unit_access_changed(struct zfcp_unit *, u8, void *); /******************************** AUX ****************************************/ extern void zfcp_rec_dbf_event_thread(u8 id, struct zfcp_adapter *adapter, int lock); -extern void zfcp_rec_dbf_event_adapter(u8 id, u64 ref, struct zfcp_adapter *); -extern void zfcp_rec_dbf_event_port(u8 id, u64 ref, struct zfcp_port *port); -extern void zfcp_rec_dbf_event_unit(u8 id, u64 ref, struct zfcp_unit *unit); -extern void zfcp_rec_dbf_event_trigger(u8 id, u64 ref, u8 want, u8 need, - u64 action, struct zfcp_adapter *, +extern void zfcp_rec_dbf_event_adapter(u8 id, void *ref, struct zfcp_adapter *); +extern void zfcp_rec_dbf_event_port(u8 id, void *ref, struct zfcp_port *port); +extern void zfcp_rec_dbf_event_unit(u8 id, void *ref, struct zfcp_unit *unit); +extern void zfcp_rec_dbf_event_trigger(u8 id, void *ref, u8 want, u8 need, + void *action, struct zfcp_adapter *, struct zfcp_port *, struct zfcp_unit *); extern void zfcp_rec_dbf_event_action(u8 id, struct zfcp_erp_action *); -- cgit v1.2.1