Re: [PATCH v2 16/31] workqueue: introduce workqueue_attrs

Tejun Heo
2013-03-05T22:44:51Z

Hello,

On Wed, Mar 06, 2013 at 09:40:48AM +1100, Ryan Mallon wrote:
> > Ooh, right, and that cpumask_t is going away and you can't statically
> > allocate cpumask_var_t, so it needs an allocation and error check from
> > it anyway.
>
> Not sure I follow. I mean drop the pointer, eg:
>
> struct workqueue_attr attrs;
>
> Since, at least in this patch, struct worker_pool appears to always
> alloc the attrs field. You do still of course need the cpumask_t
> initialisation. Am I missing something?

So, new usages of cpumask_t is frowned upon and we gotta use
cpumask_var_t which needs alloc_cpumask_var() which may fail, so we
have try-to-alloc-and-check-for-failure no matter what. Now, if we
want to embed workqueue_attrs, we have to separate out initialization
of allocated attrs from the actaul allocation. ie. we'll need
init_workqueue_attrs() and alloc_workqueue_attrs() and as the former
may fail too, it doesn't really simplify pool initilaization path.
So, we end up with more code. The added code is minor but it also
doesn't buy anything.

Thanks.

--
tejun