Skip to contentSkip to conversation

mtip32xx: Remove deprecated create_workqueue

PATCH In review Bhaktipriya Shridhar 2 participants 3 messages Jun 18, 2016 – Jun 20, 2016 Block layer

lore
Share & tools
lore
#0 lore raw

PATCH 1/1 mtip32xx: Remove deprecated create_workqueue

alloc_workqueue replaces deprecated create_workqueue().

A dedicated workqueue has been used since the workqueue isr_workq is involved in irq handling path of block driver and requires forward progress under memory pressure. Hence, WQ_MEM_RECLAIM has been set. Since there are only a fixed number of work items, explicit concurrency limit is unnecessary here.

flush_workqueue is unnecessary since destroy_workqueue() itself calls drain_workqueue() which flushes repeatedly till the workqueue becomes empty. Hence the calls to flush_workqueue() before destroy_workqueue() have been dropped.

---
 drivers/block/mtip32xx/mtip32xx.c | 4 +---
 1 file changed, 1 insertion(+), 3 deletions(-)
drivers/block/mtip32xx/mtip32xx.c +1 -3
index 6053e46..4bfb75b 100644
@@ -4437,7 +4437,7 @@ static int mtip_pci_probe(struct pci_dev *pdev,
 	memset(dd->workq_name, 0, 32);
 	snprintf(dd->workq_name, 31, "mtipq%d", dd->instance);
 
-	dd->isr_workq = create_workqueue(dd->workq_name);
+	dd->isr_workq = alloc_workqueue(dd->workq_name, WQ_MEM_RECLAIM, 0);
 	if (!dd->isr_workq) {
 		dev_warn(&pdev->dev, "Can't create wq %d\n", dd->instance);
 		rv = -ENOMEM;
@@ -4538,7 +4538,6 @@ block_initialize_err:
 
 msi_initialize_err:
 	if (dd->isr_workq) {
-		flush_workqueue(dd->isr_workq);
 		destroy_workqueue(dd->isr_workq);
 		drop_cpu(dd->work[0].cpu_binding);
 		drop_cpu(dd->work[1].cpu_binding);
@@ -4599,7 +4598,6 @@ static void mtip_pci_remove(struct pci_dev *pdev)
 	mtip_block_remove(dd);
 
 	if (dd->isr_workq) {
-		flush_workqueue(dd->isr_workq);
 		destroy_workqueue(dd->isr_workq);
 		drop_cpu(dd->work[0].cpu_binding);
 		drop_cpu(dd->work[1].cpu_binding);

--
2.1.4

#1 lore raw
Quoted 8 lines · Bhaktipriya Shridhar

alloc_workqueue replaces deprecated create_workqueue().

A dedicated workqueue has been used since the workqueue isr_workq is involved in irq handling path of block driver and requires forward progress under memory pressure. Hence, WQ_MEM_RECLAIM has been set. Since there are only a fixed number of work items, explicit concurrency limit is unnecessary here.

Quoted 4 lines

flush_workqueue is unnecessary since destroy_workqueue() itself calls drain_workqueue() which flushes repeatedly till the workqueue becomes empty. Hence the calls to flush_workqueue() before destroy_workqueue() have been dropped.

Looks good.

Thanks!

Signature · 5 lines
tejun
_______________________________________________
dri-devel mailing list
[email protected]
https://lists.freedesktop.org/mailman/listinfo/dri-devel
Acked-by
#2 lore raw
Quoted 9 lines · Tejun Heo
Quoted 8 lines · Bhaktipriya Shridhar

alloc_workqueue replaces deprecated create_workqueue().

A dedicated workqueue has been used since the workqueue isr_workq is involved in irq handling path of block driver and requires forward progress under memory pressure. Hence, WQ_MEM_RECLAIM has been set. Since there are only a fixed number of work items, explicit concurrency limit is unnecessary here.

Quoted 6 lines
Quoted 4 lines

flush_workqueue is unnecessary since destroy_workqueue() itself calls drain_workqueue() which flushes repeatedly till the workqueue becomes empty. Hence the calls to flush_workqueue() before destroy_workqueue() have been dropped.

Looks good.

lol thought this was a private review exchange. Sorry about that.

Thanks.

Signature · 5 lines
tejun
_______________________________________________
dri-devel mailing list
[email protected]
https://lists.freedesktop.org/mailman/listinfo/dri-devel