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/5] workqueue: merge the similar code
Date: Tue, 12 May 2015 09:16:33 -0400	[thread overview]
Message-ID: <20150512131633.GK11388@htj.duckdns.org> (raw)
In-Reply-To: <55515F5F.2010106@cn.fujitsu.com>

Hello,

On Tue, May 12, 2015 at 10:03:11AM +0800, Lai Jiangshan wrote:
> > @cpu_off sounds like offset into cpu array or sth.  Is there a reason
> > to change the name?
> 
> @cpu_off is a local variable in wq_update_unbound_numa() and is a shorter
> name.

Let's stick with the other name.

> > 
> >> + *
> >> + * Allocate or reuse a pwq with the cpumask that @wq should use on @node.
> > 
> > I wonder whether a better name for the function would be sth like
> > get_alloc_node_unbound_pwq().
> > 
> 
> The name length of alloc_node_unbound_pwq() had already added trouble to me
> for code-indent in the called-site.  I can add a variable to ease the indent
> problem later, but IMHO, get_alloc_node_unbound_pwq() is not strictly a better
> name over alloc_node_unbound_pwq().  Maybe we can consider get_node_unbound_pwq()?

Hmmm... the thing w/ "get" is that it gets confusing w/ refcnt ops.
alloc is kinda misleading and we do use concatenations of two verbs
for things like this - find_get, lookup_create and so on.  If the name
is too long (is it really tho?), do we really need "node" in the name?

> >>   *
> >> - * Calculate the cpumask a workqueue with @attrs should use on @node.  If
> >> - * @cpu_going_down is >= 0, that cpu is considered offline during
> >> - * calculation.  The result is stored in @cpumask.
> >> + * If NUMA affinity is not enabled, @dfl_pwq is always used.  @dfl_pwq
> >> + * was allocated with the effetive attrs saved in @dfl_pwq->pool->attrs.
> > 
> > I'm not sure we need the second sentence.
> 
> effetive -> effective
> 
> I used "the effetive attrs" twice bellow.  I need help to rephrase it,
> might you do me a favor? Or just use it without introducing it at first?

It's just a bit unnecessary to re-state where dfl_pwq is allocated
here.  It's an invariant which is explained where it's set-up.  I
don't think we need extra explanation here.

> >> +	if (cpumask_equal(cpumask, attrs->cpumask))
> >> +		goto use_dfl;
> >> +	if (pwq && wqattrs_equal(tmp_attrs, pwq->pool->attrs))
> >> +		goto use_existed;
> > 
> > 		goto use_current;
> 
> The label use_existed is shared with use_dfl:

It's just bad phrasing.  If you want to use "exist", you can say
use_existing as in "use (the) existing (one)".

> use_dfl:
> 	pwq = dfl_pwq;
> use_existed:
> 	spin_lock_irq(&pwq->pool->lock);
> 	get_pwq(pwq);
> 	spin_unlock_irq(&pwq->pool->lock);
> 	return pwq;
> 
> But I don't think the dfl_pwq is current.

I don't think we generally try to make the combination of consecutive
goto labels come out as a coherent narrative.

> >> +
> >> +	/* create a new pwq */
> >> +	pwq = alloc_unbound_pwq(wq, tmp_attrs);
> >> +	if (!pwq && use_dfl_when_fail) {
> >> +		pr_warn("workqueue: allocation failed while updating NUMA affinity of \"%s\"\n",
> >> +			wq->name);
> >> +		goto use_dfl;
> > 
> > Does this need to be in this function?  Can't we let the caller handle
> > the fallback instead?
> 
> Will it leave the duplicated code that this patch tries to remove?

Even if it ends up several more lines of code, I think that'd be
cleaner.  Look at the parameters this function is taking.  It looks
almost incoherent.

Thanks.

-- 
tejun

  reply	other threads:[~2015-05-12 13:16 UTC|newest]

Thread overview: 24+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2015-05-11  9:35 [PATCH 0/5] workqueue: cleanup for apply_workqueue_attrs() Lai Jiangshan
2015-05-11  9:35 ` [PATCH 1/5] workqueue: wq_pool_mutex protects the attrs-installation Lai Jiangshan
2015-05-11 12:23   ` Tejun Heo
2016-03-10 21:44   ` Steven Rostedt
2016-03-11 17:50     ` Tejun Heo
2016-07-11 20:50     ` Steven Rostedt
2016-07-12 15:09       ` Tejun Heo
2016-07-12 15:20         ` Tejun Heo
2016-07-12 15:23           ` Steven Rostedt
2015-05-11  9:35 ` [PATCH 2/5] workqueue: merge the similar code Lai Jiangshan
2015-05-11 14:31   ` Tejun Heo
2015-05-12  2:03     ` Lai Jiangshan
2015-05-12 13:16       ` Tejun Heo [this message]
2015-05-11  9:35 ` [PATCH 3/5] workqueue: ensure attrs-changing be sequentially Lai Jiangshan
2015-05-11 14:55   ` Tejun Heo
2015-05-12  5:09     ` Lai Jiangshan
2015-05-12 13:19       ` Tejun Heo
2015-05-11  9:35 ` [PATCH 4/5] workqueue: don't expose workqueue_attrs to users Lai Jiangshan
2015-05-11 14:59   ` Tejun Heo
2015-05-12  2:15     ` Lai Jiangshan
2015-05-12 13:22       ` Tejun Heo
2015-05-13  1:43         ` Lai Jiangshan
2015-05-13 13:52           ` Tejun Heo
2015-05-11  9:35 ` [PATCH 5/5] workqueue: remove no_numa from workqueue_attrs Lai Jiangshan

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=20150512131633.GK11388@htj.duckdns.org \
    --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.