[SCSI] mpt2sas: RESCAN Barrier work is added in case of HBA reset.
Add the cancel_pending_work flag from the fw_event_work structure, and then to set the flag during host reset, check the flag later from work threads context and if cancel_pending_work_flag is set ingore those events. Now Rescan after host reset is changed. Added special task MPT2SAS_RESCAN_AFTER_HOST_RESET. This task will be queued at the time of HBA reset. this task is treated as barrier. All work after MPT2SAS_RESCAN_AFTER_HOST_RESET will be treated as new work and will be server by callback handle. If host_recovery is going on while running RESCAN task, it will wait for shos_recovery_done completion which will be called from HBA reset DONE context. Signed-off-by: Kashyap Desai <kashyap.desai@lsi.com> Reviewed-by: Eric Moore <eric.moore@lsi.com> Signed-off-by: James Bottomley <James.Bottomley@suse.de>
This commit is contained in:
committed by
James Bottomley
parent
36dd288f0f
commit
f1c35e6aea
@ -119,7 +119,6 @@
|
||||
#define MPT2_IOC_PRE_RESET 1 /* prior to host reset */
|
||||
#define MPT2_IOC_AFTER_RESET 2 /* just after host reset */
|
||||
#define MPT2_IOC_DONE_RESET 3 /* links re-initialized */
|
||||
#define MPT2_IOC_RUNNING 4 /* shost running */
|
||||
|
||||
/*
|
||||
* logging format
|
||||
@ -603,7 +602,6 @@ struct MPT2SAS_ADAPTER {
|
||||
/* fw event handler */
|
||||
char firmware_event_name[20];
|
||||
struct workqueue_struct *firmware_event_thread;
|
||||
u8 fw_events_off;
|
||||
spinlock_t fw_event_lock;
|
||||
struct list_head fw_event_list;
|
||||
|
||||
@ -611,6 +609,7 @@ struct MPT2SAS_ADAPTER {
|
||||
int aen_event_read_flag;
|
||||
u8 broadcast_aen_busy;
|
||||
u8 shost_recovery;
|
||||
struct completion shost_recovery_done;
|
||||
spinlock_t ioc_reset_in_progress_lock;
|
||||
u8 ioc_link_reset_in_progress;
|
||||
u8 ignore_loginfos;
|
||||
|
Reference in New Issue
Block a user