Message ID | 0b9ebcfb-b647-1381-0653-b54528a64a86@I-love.SAKURA.ne.jp (mailing list archive) |
---|---|
State | Accepted |
Commit | a4c2673caed9a5705b78898004ea066c29d8cafe |
Headers | show |
Series | scsi: message: fusion: avoid flush_scheduled_work() usage | expand |
Tetsuo, > Like commit c4f135d643823a86 ("workqueue: Wrap flush_workqueue() using a > macro") says, flush_scheduled_work() is dangerous and will be forbidden. Applied to 6.4/scsi-staging, thanks!
On Wed, 22 Feb 2023 00:02:46 +0900, Tetsuo Handa wrote: > Like commit c4f135d643823a86 ("workqueue: Wrap flush_workqueue() using a > macro") says, flush_scheduled_work() is dangerous and will be forbidden. > > Commit 4d4109d0eb69 ("[SCSI] mpt fusion: Power Management fixes for MPT > SAS PCI-E controllers") added flush_scheduled_work() call into > mptscsih_suspend(). As of commit 4d4109d0eb69, there were several > schedule{,_delayed}_work() calls where flush_scheduled_work() from > mptscsih_suspend() meant to wait for completion, but which work items > is this flush_scheduled_work() call for was not explained. > > [...] Applied to 6.4/scsi-queue, thanks! [1/1] scsi: message: fusion: avoid flush_scheduled_work() usage https://git.kernel.org/mkp/scsi/c/a4c2673caed9
diff --git a/drivers/message/fusion/mptscsih.c b/drivers/message/fusion/mptscsih.c index 276084ed04a6..2bc17087d17d 100644 --- a/drivers/message/fusion/mptscsih.c +++ b/drivers/message/fusion/mptscsih.c @@ -1231,7 +1231,6 @@ mptscsih_suspend(struct pci_dev *pdev, pm_message_t state) MPT_ADAPTER *ioc = pci_get_drvdata(pdev); scsi_block_requests(ioc->sh); - flush_scheduled_work(); mptscsih_shutdown(pdev); return mpt_suspend(pdev,state); }
Like commit c4f135d643823a86 ("workqueue: Wrap flush_workqueue() using a macro") says, flush_scheduled_work() is dangerous and will be forbidden. Commit 4d4109d0eb69 ("[SCSI] mpt fusion: Power Management fixes for MPT SAS PCI-E controllers") added flush_scheduled_work() call into mptscsih_suspend(). As of commit 4d4109d0eb69, there were several schedule{,_delayed}_work() calls where flush_scheduled_work() from mptscsih_suspend() meant to wait for completion, but which work items is this flush_scheduled_work() call for was not explained. Then, schedule_work("struct mptsas_hotplug_event"->work) and schedule_work(MPT_ADAPTER->sas_persist_task) has been removed by commit 3eb0822c6740 ("[SCSI] mpt fusion: Firmware event implementation using seperate WorkQueue"), and schedule_work("struct mptsas_send_discovery_event"->work) has been removed by commit f9c34022eae9 ("[SCSI] mpt fusion: SAS topology scan changes, expander events"). There still remains schedule_work("struct work_queue_wrapper"->work) call in mptspi.c and schedule_delayed_work("struct mpt_lan_priv"->work) call in mptlan.c , but I guess that these are not work items which commit 4d4109d0eb69 meant to wait for completion because these are not per MPT_ADAPTER work items. If my guess is correct, we no longer need to call flush_scheduled_work() from mptscsih_suspend(). Signed-off-by: Tetsuo Handa <penguin-kernel@I-love.SAKURA.ne.jp> --- drivers/message/fusion/mptscsih.c | 1 - 1 file changed, 1 deletion(-)