Skip to contentSkip to conversation

fusion: Remove deprecated create_singlethread_workqueue

PATCH Applied Bhaktipriya Shridhar 3 participants 6 messages Aug 30, 2016 – Sep 2, 2016

Subsystems (2)

v1 of 4 Applied Latest is v4 →

lore
Share & tools
lore
#0 lore raw

cover fusion: Remove deprecated create_singlethread_workqueue

This patch set removes deprecated create_singlethread_workqueue instances from drivers/message

Bhaktipriya Shridhar (2):
fusion/mptfc: Remove deprecated create_singlethread_workqueue
fusion: mptbase: Remove deprecated create_singlethread_workqueue

 drivers/message/fusion/mptbase.c | 7 ++++---
 drivers/message/fusion/mptfc.c   | 3 ++-
 2 files changed, 6 insertions(+), 4 deletions(-)

--
2.1.4

#1 lore raw

PATCH 1/2 fusion/mptfc: Remove deprecated create_singlethread_workqueue

The workqueue "fc_rescan_work_q" queues multiple work items viz &ioc->fc_rescan_work, &ioc->fc_lsc_work, &ioc->fc_setup_reset_work, which require strict execution ordering.
Hence, an ordered dedicated workqueue has been used.

WQ_MEM_RECLAIM has been set since the workqueue is belongs to a storage driver which is being used on a memory reclaim path and hence, requires forward progress under memory pressure.

---
 drivers/message/fusion/mptfc.c | 3 ++-
 1 file changed, 2 insertions(+), 1 deletion(-)
drivers/message/fusion/mptfc.c +2 -1
index d8bf84a..129e132 100644
@@ -1324,7 +1324,8 @@ mptfc_probe(struct pci_dev *pdev, const struct pci_device_id *id)
 	snprintf(ioc->fc_rescan_work_q_name, sizeof(ioc->fc_rescan_work_q_name),
 		 "mptfc_wq_%d", sh->host_no);
 	ioc->fc_rescan_work_q =
-		create_singlethread_workqueue(ioc->fc_rescan_work_q_name);
+		alloc_ordered_workqueue(ioc->fc_rescan_work_q_name,
+					WQ_MEM_RECLAIM);
 	if (!ioc->fc_rescan_work_q)
 		goto out_mptfc_probe;
 

--
2.1.4

Acked-by on v1 1/2
#2 lore raw

Re: [PATCH 1/2] fusion/mptfc: Remove deprecated create_singlethread_workqueue

Quoted 10 lines · Bhaktipriya Shridhar

The workqueue "fc_rescan_work_q" queues multiple work items viz &ioc->fc_rescan_work, &ioc->fc_lsc_work, &ioc->fc_setup_reset_work, which require strict execution ordering.
Hence, an ordered dedicated workqueue has been used.

WQ_MEM_RECLAIM has been set since the workqueue is belongs to a storage driver which is being used on a memory reclaim path and hence, requires forward progress under memory pressure.

Thanks.

Signature · 1 line
tejun
#3 lore raw

PATCH 2/2 fusion: mptbase: Remove deprecated create_singlethread_workqueue

In reply to Bhaktipriya Shridhar

The workqueues "ioc->reset_work_q" and "ioc->fw_event_q" queue a single work item &ioc->fault_reset_work and &fw_event->work, respectively and hence don't require ordering. Hence, they have been converted to use alloc_workqueue().

The WQ_MEM_RECLAIM flag has been set to ensure forward progress under memory pressure since the workqueue belongs to a storage driver which is being used on a memory reclaim path.

Since there are fixed number of work items, explicit concurrency limit is unnecessary here.

---
 drivers/message/fusion/mptbase.c | 7 ++++---
 1 file changed, 4 insertions(+), 3 deletions(-)
drivers/message/fusion/mptbase.c +4 -3
index 5537f8d..89c7ed1 100644
@@ -1865,8 +1865,8 @@ mpt_attach(struct pci_dev *pdev, const struct pci_device_id *id)
 
 	snprintf(ioc->reset_work_q_name, MPT_KOBJ_NAME_LEN,
 		 "mpt_poll_%d", ioc->id);
-	ioc->reset_work_q =
-		create_singlethread_workqueue(ioc->reset_work_q_name);
+	ioc->reset_work_q = alloc_workqueue(ioc->reset_work_q_name,
+					    WQ_MEM_RECLAIM, 0);
 	if (!ioc->reset_work_q) {
 		printk(MYIOC_s_ERR_FMT "Insufficient memory to add adapter!\n",
 		    ioc->name);
@@ -1992,7 +1992,8 @@ mpt_attach(struct pci_dev *pdev, const struct pci_device_id *id)
 	INIT_LIST_HEAD(&ioc->fw_event_list);
 	spin_lock_init(&ioc->fw_event_lock);
 	snprintf(ioc->fw_event_q_name, MPT_KOBJ_NAME_LEN, "mpt/%d", ioc->id);
-	ioc->fw_event_q = create_singlethread_workqueue(ioc->fw_event_q_name);
+	ioc->fw_event_q = alloc_workqueue(ioc->fw_event_q_name,
+					  WQ_MEM_RECLAIM, 0);
 	if (!ioc->fw_event_q) {
 		printk(MYIOC_s_ERR_FMT "Insufficient memory to add adapter!\n",
 		    ioc->name);

--
2.1.4

Acked-by on v1 2/2
#4 lore raw

Re: [PATCH 2/2] fusion: mptbase: Remove deprecated create_singlethread_workqueue

Quoted 5 lines · Bhaktipriya Shridhar

The workqueues "ioc->reset_work_q" and "ioc->fw_event_q" queue a single work item &ioc->fault_reset_work and &fw_event->work, respectively and hence don't require ordering. Hence, they have been converted to use alloc_workqueue().

Quoted 8 lines

The WQ_MEM_RECLAIM flag has been set to ensure forward progress under memory pressure since the workqueue belongs to a storage driver which is being used on a memory reclaim path.

Since there are fixed number of work items, explicit concurrency limit is unnecessary here.

Thanks.

Signature · 1 line
tejun
#5 lore raw
In reply to Bhaktipriya Shridhar
Quoted 1 line
Quoted 1 line
Quoted 1 line
Quoted 1 line
Quoted 1 line

"Bhaktipriya" == Bhaktipriya Shridhar <[email protected]> writes:

Bhaktipriya> This patch set removes deprecated Bhaktipriya> create_singlethread_workqueue instances from Bhaktipriya> drivers/message

Applied to 4.9/scsi-queue.

Thanks!

Signature · 1 line
Martin K. Petersen	Oracle Linux Engineering