From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1755333Ab1ACNul (ORCPT ); Mon, 3 Jan 2011 08:50:41 -0500 Received: from mail-bw0-f46.google.com ([209.85.214.46]:58971 "EHLO mail-bw0-f46.google.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1755241Ab1ACNuf (ORCPT ); Mon, 3 Jan 2011 08:50:35 -0500 DomainKey-Signature: a=rsa-sha1; c=nofws; d=gmail.com; s=gamma; h=sender:from:to:cc:subject:date:message-id:x-mailer:in-reply-to :references; b=o0dkbltBC3AEx3DFLMqtaIwG+kojvRe0FxOKc/obE532ZOal+1M7xTV3VLOmvXJpQG qv3dAccQNMpjvM583NmbR/bXBU0f107clQxclhkC5JzVuD4foDOLxpxgiRYHXaTcTqSG 3WwjTLmjGfEfRLntsC4rhOeWC7kD23Pv7fPFI= From: Tejun Heo To: linux-kernel@vger.kernel.org Cc: Tejun Heo , FUJITA Tomonori , "James E.J. Bottomley" , linux-scsi@vger.kernel.org Subject: [PATCH 17/32] scsi/ibmvstgt: use system_wq instead of vtgtd workqueue Date: Mon, 3 Jan 2011 14:49:40 +0100 Message-Id: <1294062595-30097-18-git-send-email-tj@kernel.org> X-Mailer: git-send-email 1.7.1 In-Reply-To: <1294062595-30097-1-git-send-email-tj@kernel.org> References: <1294062595-30097-1-git-send-email-tj@kernel.org> Sender: linux-kernel-owner@vger.kernel.org List-ID: X-Mailing-List: linux-kernel@vger.kernel.org The target driver is not in the memory reclaim path and doesn't need a dedicated workqueue. Drop vtgtd and use system_wq instead. The used work item is sync flushed on removal. Signed-off-by: Tejun Heo Cc: FUJITA Tomonori Cc: "James E.J. Bottomley" Cc: linux-scsi@vger.kernel.org --- Only compile tested. Please feel free to take it into the subsystem tree or simply ack - I'll route it through the wq tree. Thanks. drivers/scsi/ibmvscsi/ibmvstgt.c | 15 ++++----------- 1 files changed, 4 insertions(+), 11 deletions(-) diff --git a/drivers/scsi/ibmvscsi/ibmvstgt.c b/drivers/scsi/ibmvscsi/ibmvstgt.c index 2256bab..47fc632 100644 --- a/drivers/scsi/ibmvscsi/ibmvstgt.c +++ b/drivers/scsi/ibmvscsi/ibmvstgt.c @@ -74,7 +74,6 @@ struct vio_port { struct srp_rport *rport; }; -static struct workqueue_struct *vtgtd; static struct scsi_transport_template *ibmvstgt_transport_template; /* @@ -546,7 +545,7 @@ static irqreturn_t ibmvstgt_interrupt(int dummy, void *data) struct vio_port *vport = target_to_port(target); vio_disable_interrupts(vport->dma_dev); - queue_work(vtgtd, &vport->crq_work); + schedule_work(&vport->crq_work); return IRQ_HANDLED; } @@ -900,6 +899,7 @@ static int ibmvstgt_remove(struct vio_dev *dev) crq_queue_destroy(target); srp_remove_host(shost); scsi_remove_host(shost); + flush_work_sync(&vport->crq_work); scsi_tgt_free_queue(shost); srp_target_free(target); kfree(vport); @@ -967,21 +967,15 @@ static int __init ibmvstgt_init(void) if (!ibmvstgt_transport_template) return err; - vtgtd = create_workqueue("ibmvtgtd"); - if (!vtgtd) - goto release_transport; - err = get_system_info(); if (err) - goto destroy_wq; + goto release_transport; err = vio_register_driver(&ibmvstgt_driver); if (err) - goto destroy_wq; + goto release_transport; return 0; -destroy_wq: - destroy_workqueue(vtgtd); release_transport: srp_release_transport(ibmvstgt_transport_template); return err; @@ -991,7 +985,6 @@ static void __exit ibmvstgt_exit(void) { printk("Unregister IBM virtual SCSI driver\n"); - destroy_workqueue(vtgtd); vio_unregister_driver(&ibmvstgt_driver); srp_release_transport(ibmvstgt_transport_template); } -- 1.7.1