From: Tejun Heo <tj@kernel.org>
To: linux-kernel@vger.kernel.org, netdev@vger.kernel.org,
davem@davemloft.net
Cc: Tejun Heo <tj@kernel.org>, Santiago Leon <santil@linux.vnet.ibm.com>
Subject: [PATCH 5/9] iseries_veth: don't use flush_scheduled_work()
Date: Sun, 12 Dec 2010 16:53:01 +0100 [thread overview]
Message-ID: <1292169185-10579-6-git-send-email-tj@kernel.org> (raw)
In-Reply-To: <1292169185-10579-1-git-send-email-tj@kernel.org>
flush_scheduled_work() is on its way out. Remove its usage from
iseries_veth.
* Cancelling a delayed work, queueing it for immediate execution if
cancelled and then waiting for completion can be done by simply
calling flush_delayed_work_sync().
* Explicitly cancel cnx->statemachine_wq on module unload.
Signed-off-by: Tejun Heo <tj@kernel.org>
Cc: "David S. Miller" <davem@davemloft.net>
Cc: Santiago Leon <santil@linux.vnet.ibm.com>
Cc: netdev@vger.kernel.org
---
drivers/net/iseries_veth.c | 18 ++++--------------
1 files changed, 4 insertions(+), 14 deletions(-)
diff --git a/drivers/net/iseries_veth.c b/drivers/net/iseries_veth.c
index 63ac531..9ece1fd 100644
--- a/drivers/net/iseries_veth.c
+++ b/drivers/net/iseries_veth.c
@@ -885,17 +885,8 @@ static void veth_stop_connection(struct veth_lpar_connection *cnx)
veth_kick_statemachine(cnx);
spin_unlock_irq(&cnx->lock);
- /* There's a slim chance the reset code has just queued the
- * statemachine to run in five seconds. If so we need to cancel
- * that and requeue the work to run now. */
- if (cancel_delayed_work(&cnx->statemachine_wq)) {
- spin_lock_irq(&cnx->lock);
- veth_kick_statemachine(cnx);
- spin_unlock_irq(&cnx->lock);
- }
-
- /* Wait for the state machine to run. */
- flush_scheduled_work();
+ /* ensure the statemachine runs now and waits for its completion */
+ flush_delayed_work_sync(&cnx->statemachine_wq);
}
static void veth_destroy_connection(struct veth_lpar_connection *cnx)
@@ -1653,15 +1644,14 @@ static void __exit veth_module_cleanup(void)
/* Disconnect our "irq" to stop events coming from the Hypervisor. */
HvLpEvent_unregisterHandler(HvLpEvent_Type_VirtualLan);
- /* Make sure any work queued from Hypervisor callbacks is finished. */
- flush_scheduled_work();
-
for (i = 0; i < HVMAXARCHITECTEDLPS; ++i) {
cnx = veth_cnx[i];
if (!cnx)
continue;
+ /* Cancel work queued from Hypervisor callbacks */
+ cancel_delayed_work_sync(&cnx->statemachine_wq);
/* Remove the connection from sysfs */
kobject_del(&cnx->kobject);
/* Drop the driver's reference to the connection */
--
1.7.1
next prev parent reply other threads:[~2010-12-12 15:54 UTC|newest]
Thread overview: 15+ messages / expand[flat|nested] mbox.gz Atom feed top
2010-12-12 15:52 [PATCHSET] net-dev: don't use flush_scheduled_work() Tejun Heo
2010-12-12 15:52 ` [PATCH 1/9] drivers/net: remove unnecessary flush_scheduled_work() calls Tejun Heo
2010-12-15 0:54 ` Jon Mason
2010-12-12 15:52 ` [PATCH 2/9] drivers/net: don't use flush_scheduled_work() Tejun Heo
2010-12-13 11:22 ` Lennert Buytenhek
2010-12-13 17:08 ` Michael Chan
2010-12-13 21:27 ` Andrew Gallatin
2010-12-12 15:52 ` [PATCH 3/9] ehea: kill unused ehea_rereg_mr_task Tejun Heo
2010-12-12 15:53 ` [PATCH 4/9] ehea: don't use flush_scheduled_work() Tejun Heo
2010-12-12 15:53 ` Tejun Heo [this message]
2010-12-12 15:53 ` [PATCH 6/9] igb[v],ixgbe: " Tejun Heo
2010-12-12 15:53 ` [PATCH 7/9] sungem: update gp->reset_task flushing Tejun Heo
2010-12-12 15:53 ` [PATCH 8/9] i2400m: drop i2400m_schedule_work() Tejun Heo
2010-12-12 15:53 ` [PATCH 9/9] hostap: don't use flush_scheduled_work() Tejun Heo
2010-12-12 22:38 ` [PATCHSET] net-dev: " David Miller
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=1292169185-10579-6-git-send-email-tj@kernel.org \
--to=tj@kernel.org \
--cc=davem@davemloft.net \
--cc=linux-kernel@vger.kernel.org \
--cc=netdev@vger.kernel.org \
--cc=santil@linux.vnet.ibm.com \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.