All of lore.kernel.org
 help / color / mirror / Atom feed
From: Tejun Heo <tj@kernel.org>
To: Frederic Weisbecker <fweisbec@gmail.com>
Cc: LKML <linux-kernel@vger.kernel.org>,
	Christoph Lameter <cl@linux.com>,
	Kevin Hilman <khilman@linaro.org>,
	Lai Jiangshan <laijs@cn.fujitsu.com>,
	Mike Galbraith <bitbucket@online.de>,
	"Paul E. McKenney" <paulmck@linux.vnet.ibm.com>,
	Viresh Kumar <viresh.kumar@linaro.org>
Subject: Re: [PATCH 3/4] workqueue: Allow modifying low level unbound workqueue cpumask
Date: Thu, 24 Apr 2014 11:30:48 -0400	[thread overview]
Message-ID: <20140424153048.GE14460@htj.dyndns.org> (raw)
In-Reply-To: <1398350256-7834-4-git-send-email-fweisbec@gmail.com>

On Thu, Apr 24, 2014 at 04:37:35PM +0200, Frederic Weisbecker wrote:
> +static int apply_workqueue_attrs_locked(struct workqueue_struct *wq,
> +					const struct workqueue_attrs *attrs);

Can't we reorder things so that we don't need the above prototype?

> +/* Must be called with wq_unbound_mutex held */

Please use lockdep_assert_held() instead.

> +static int unbounds_cpumask_apply_all(cpumask_var_t cpumask)
> +{
> +	struct workqueue_struct *wq;
> +
> +	list_for_each_entry(wq, &workqueues, list) {
> +		struct workqueue_attrs *attrs;
> +
> +		if (!(wq->flags & WQ_UNBOUND))
> +			continue;
> +		/* Ordered workqueues need specific treatment */
> +		if (wq->flags & __WQ_ORDERED)
> +			continue;
> +
> +		attrs = wq_sysfs_prep_attrs(wq);
> +		if (!attrs)
> +			return -ENOMEM;

So, we're failing in the middle without rolling back?

> +
> +		WARN_ON_ONCE(apply_workqueue_attrs_locked(wq, attrs));

Are we triggering WARN on -ENOMEM too and then ignore the failure?

> +		free_workqueue_attrs(attrs);
> +	}
> +
> +	return 0;
> +}

Shouldn't we separate allocation stage from switching stage so that we
can either succeed or fail?  The above is very mushy about error
handling.

Thanks.

-- 
tejun

  reply	other threads:[~2014-04-24 15:30 UTC|newest]

Thread overview: 18+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2014-04-24 14:37 [RFC PATCH 0/4] workqueue: Introduce low-level unbound wq sysfs cpumask Frederic Weisbecker
2014-04-24 14:37 ` [PATCH 1/4] workqueue: Create low-level unbound workqueues cpumask Frederic Weisbecker
2014-04-24 15:37   ` Tejun Heo
2014-05-01 15:01     ` Frederic Weisbecker
2014-05-01 15:02       ` Tejun Heo
2014-05-01 15:09         ` Frederic Weisbecker
2014-05-01 15:13           ` Tejun Heo
2014-04-24 22:42   ` Kevin Hilman
2014-04-24 14:37 ` [PATCH 2/4] workqueue: Split apply attrs code from its locking Frederic Weisbecker
2014-04-24 14:48   ` Tejun Heo
2014-05-01 14:40     ` Frederic Weisbecker
2014-05-01 14:41       ` Tejun Heo
2014-04-24 14:37 ` [PATCH 3/4] workqueue: Allow modifying low level unbound workqueue cpumask Frederic Weisbecker
2014-04-24 15:30   ` Tejun Heo [this message]
2014-05-01 14:49     ` Frederic Weisbecker
2014-04-24 14:37 ` [PATCH 4/4] workqueue: Handle ordered workqueues on cpumask_unbounds change Frederic Weisbecker
2014-04-24 15:33   ` Tejun Heo
2014-05-01 14:51     ` Frederic Weisbecker

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=20140424153048.GE14460@htj.dyndns.org \
    --to=tj@kernel.org \
    --cc=bitbucket@online.de \
    --cc=cl@linux.com \
    --cc=fweisbec@gmail.com \
    --cc=khilman@linaro.org \
    --cc=laijs@cn.fujitsu.com \
    --cc=linux-kernel@vger.kernel.org \
    --cc=paulmck@linux.vnet.ibm.com \
    --cc=viresh.kumar@linaro.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.