Commit a684b8da authored by Tejun Heo's avatar Tejun Heo Committed by James Bottomley

[SCSI] remove flush_scheduled_work() usages

Simple conversions to drop flush_scheduled_work() usages in
drivers/scsi.  More involved ones will be done in separate patches.

* NCR5380, megaraid_sas: cancel_delayed_work() +
  flush_scheduled_work() -> cancel_delayed_work_sync().

* mpt2sas_scsih: drop unnecessary flush_scheduled_work().

* arcmsr_hba, ipr, pmcraid: flush the used work explicitly instead of
  using flush_scheduled_work().
Signed-off-by: default avatarTejun Heo <tj@kernel.org>
Signed-off-by: default avatarJames Bottomley <James.Bottomley@suse.de>
parent 75c65a5e
...@@ -936,8 +936,7 @@ static void NCR5380_exit(struct Scsi_Host *instance) ...@@ -936,8 +936,7 @@ static void NCR5380_exit(struct Scsi_Host *instance)
{ {
struct NCR5380_hostdata *hostdata = (struct NCR5380_hostdata *) instance->hostdata; struct NCR5380_hostdata *hostdata = (struct NCR5380_hostdata *) instance->hostdata;
cancel_delayed_work(&hostdata->coroutine); cancel_delayed_work_sync(&hostdata->coroutine);
flush_scheduled_work();
} }
/** /**
......
...@@ -1022,7 +1022,7 @@ static void arcmsr_remove(struct pci_dev *pdev) ...@@ -1022,7 +1022,7 @@ static void arcmsr_remove(struct pci_dev *pdev)
int poll_count = 0; int poll_count = 0;
arcmsr_free_sysfs_attr(acb); arcmsr_free_sysfs_attr(acb);
scsi_remove_host(host); scsi_remove_host(host);
flush_scheduled_work(); flush_work_sync(&acb->arcmsr_do_message_isr_bh);
del_timer_sync(&acb->eternal_timer); del_timer_sync(&acb->eternal_timer);
arcmsr_disable_outbound_ints(acb); arcmsr_disable_outbound_ints(acb);
arcmsr_stop_adapter_bgrb(acb); arcmsr_stop_adapter_bgrb(acb);
...@@ -1068,7 +1068,7 @@ static void arcmsr_shutdown(struct pci_dev *pdev) ...@@ -1068,7 +1068,7 @@ static void arcmsr_shutdown(struct pci_dev *pdev)
(struct AdapterControlBlock *)host->hostdata; (struct AdapterControlBlock *)host->hostdata;
del_timer_sync(&acb->eternal_timer); del_timer_sync(&acb->eternal_timer);
arcmsr_disable_outbound_ints(acb); arcmsr_disable_outbound_ints(acb);
flush_scheduled_work(); flush_work_sync(&acb->arcmsr_do_message_isr_bh);
arcmsr_stop_adapter_bgrb(acb); arcmsr_stop_adapter_bgrb(acb);
arcmsr_flush_adapter_cache(acb); arcmsr_flush_adapter_cache(acb);
} }
......
...@@ -8865,7 +8865,7 @@ static void __ipr_remove(struct pci_dev *pdev) ...@@ -8865,7 +8865,7 @@ static void __ipr_remove(struct pci_dev *pdev)
spin_unlock_irqrestore(ioa_cfg->host->host_lock, host_lock_flags); spin_unlock_irqrestore(ioa_cfg->host->host_lock, host_lock_flags);
wait_event(ioa_cfg->reset_wait_q, !ioa_cfg->in_reset_reload); wait_event(ioa_cfg->reset_wait_q, !ioa_cfg->in_reset_reload);
flush_scheduled_work(); flush_work_sync(&ioa_cfg->work_q);
spin_lock_irqsave(ioa_cfg->host->host_lock, host_lock_flags); spin_lock_irqsave(ioa_cfg->host->host_lock, host_lock_flags);
spin_lock(&ipr_driver_lock); spin_lock(&ipr_driver_lock);
......
...@@ -4242,9 +4242,8 @@ megasas_suspend(struct pci_dev *pdev, pm_message_t state) ...@@ -4242,9 +4242,8 @@ megasas_suspend(struct pci_dev *pdev, pm_message_t state)
/* cancel the delayed work if this work still in queue */ /* cancel the delayed work if this work still in queue */
if (instance->ev != NULL) { if (instance->ev != NULL) {
struct megasas_aen_event *ev = instance->ev; struct megasas_aen_event *ev = instance->ev;
cancel_delayed_work( cancel_delayed_work_sync(
(struct delayed_work *)&ev->hotplug_work); (struct delayed_work *)&ev->hotplug_work);
flush_scheduled_work();
instance->ev = NULL; instance->ev = NULL;
} }
...@@ -4417,9 +4416,8 @@ static void __devexit megasas_detach_one(struct pci_dev *pdev) ...@@ -4417,9 +4416,8 @@ static void __devexit megasas_detach_one(struct pci_dev *pdev)
/* cancel the delayed work if this work still in queue*/ /* cancel the delayed work if this work still in queue*/
if (instance->ev != NULL) { if (instance->ev != NULL) {
struct megasas_aen_event *ev = instance->ev; struct megasas_aen_event *ev = instance->ev;
cancel_delayed_work( cancel_delayed_work_sync(
(struct delayed_work *)&ev->hotplug_work); (struct delayed_work *)&ev->hotplug_work);
flush_scheduled_work();
instance->ev = NULL; instance->ev = NULL;
} }
......
...@@ -6935,7 +6935,6 @@ _scsih_suspend(struct pci_dev *pdev, pm_message_t state) ...@@ -6935,7 +6935,6 @@ _scsih_suspend(struct pci_dev *pdev, pm_message_t state)
u32 device_state; u32 device_state;
mpt2sas_base_stop_watchdog(ioc); mpt2sas_base_stop_watchdog(ioc);
flush_scheduled_work();
scsi_block_requests(shost); scsi_block_requests(shost);
device_state = pci_choose_state(pdev, state); device_state = pci_choose_state(pdev, state);
printk(MPT2SAS_INFO_FMT "pdev=0x%p, slot=%s, entering " printk(MPT2SAS_INFO_FMT "pdev=0x%p, slot=%s, entering "
......
...@@ -5454,7 +5454,7 @@ static void __devexit pmcraid_remove(struct pci_dev *pdev) ...@@ -5454,7 +5454,7 @@ static void __devexit pmcraid_remove(struct pci_dev *pdev)
pmcraid_shutdown(pdev); pmcraid_shutdown(pdev);
pmcraid_disable_interrupts(pinstance, ~0); pmcraid_disable_interrupts(pinstance, ~0);
flush_scheduled_work(); flush_work_sync(&pinstance->worker_q);
pmcraid_kill_tasklets(pinstance); pmcraid_kill_tasklets(pinstance);
pmcraid_unregister_interrupt_handler(pinstance); pmcraid_unregister_interrupt_handler(pinstance);
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment