All of lore.kernel.org
 help / color / mirror / Atom feed
From: Tejun Heo <tj@kernel.org>
To: Lai Jiangshan <laijs@cn.fujitsu.com>
Cc: linux-kernel@vger.kernel.org
Subject: Re: [PATCH 2/2] workqueue: Keep activate-order equals to queue_work()-order
Date: Tue, 18 Sep 2012 10:05:19 -0700	[thread overview]
Message-ID: <20120918170519.GB8474@google.com> (raw)
In-Reply-To: <1347957414-6692-2-git-send-email-laijs@cn.fujitsu.com>

On Tue, Sep 18, 2012 at 04:36:53PM +0800, Lai Jiangshan wrote:
> The whole workqueue.c keeps activate-order equals to queue_work()-order
> in any given cwq except workqueue_set_max_active().
> 
> If this order is not kept, something may be not good:
> 
> first_work_fn() { release some resource; }
> second_work_fn() { wait and request the resource; use resource; }
> 
> 1. user queues the first work.	# ->max_active is low, is queued on ->delayed_works.
> 2. someone increases the >max_active via workqueue_set_max_active()
> 3. user queues the second work.	# queued on cwq->pool.
> 
> When the second work is launched to execute, it waits the first work
> to release the resource. But the first work is still in ->delayed_works,
> it waits the first work to finish and them it can be activated.
> 
> It is bad. we fix it by activating the first work in the step 2.
> 
> I can't fully determine that it is workqueue's responsibility
> or the user's responsibility.
> If it is workqueue's responsibility, the patch needs go to -stable.
> If it is user's responsibility. it is a nice cleanup, it can go to for-next.
> I prefer it is workqueue's responsibility.

Unless max_active == 1, workqueue doesn't give any guarantee on
execution order.  I don't think we need to care about this.

Thanks.

-- 
tejun

  reply	other threads:[~2012-09-18 17:05 UTC|newest]

Thread overview: 8+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2012-09-18  8:36 [PATCH 1/2] workqueue: intruduce cwq_set_max_active() helper for thaw_workqueues() Lai Jiangshan
2012-09-18  8:36 ` [PATCH 2/2] workqueue: Keep activate-order equals to queue_work()-order Lai Jiangshan
2012-09-18 17:05   ` Tejun Heo [this message]
2012-09-18 17:08     ` Tejun Heo
2012-09-19 10:13       ` Lai Jiangshan
2012-09-19 17:42         ` Tejun Heo
2012-09-19  9:57     ` Lai Jiangshan
2012-09-19 17:31       ` Tejun Heo

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=20120918170519.GB8474@google.com \
    --to=tj@kernel.org \
    --cc=laijs@cn.fujitsu.com \
    --cc=linux-kernel@vger.kernel.org \
    /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.