On Thu, Jun 21, 2018 at 05:13:39AM +0300, Andy Shevchenko wrote:
On Tue, Jun 19, 2018 at 2:10 AM, Andrew Morton
[off-list ref] wrote:
quoted
On Mon, 18 Jun 2018 15:01:43 -0700 Dmitry Torokhov [off-list ref] wrote:
quoted
quoted
We can't as we end up including bitmap.h (by the way of cpumask.h)
form slab.h, so we gen circular dependency.
It's not just so easy. See below.
quoted
That info should have been in the changelog, and probably a code
comment.
quoted
Maybe if we removed memcg
stuff from slab.h so we do not need to include workqueue.h...
Or move the basic slab API stuff out of slab.h into a new header. Or
create a new, standalone work_struct.h - that looks pretty simple.
I tried to move out work_struct, it didn't help. There are actually
several circular dependencies that ends in bitmap.h either way or
another.
First one is
slab.h -> gfp.h -> mmzone.h -> nodemask.h -> bitmap.h
And so on...
Splitting out kXalloc stuff to a separate header won't help, I think,
because of the above.
Splitting out struct work_struct is just a tip of an iceberg.
Splitting out memcg stuff won't help in the similar way.
I'm all ears for (a better) solution.
I think ultimately we'd want to untangle this, but allocating bitmaps is
not in any hot paths so having them as non-inlined functions should not
hurt us that much for time being.
Just my 2 cents...
--
Dmitry