[PATCH 04/11] mm: compaction: export some of the functions

Michal Nazarewicz mina86 at mina86.com
Mon Dec 12 09:41:04 EST 2011


On Mon, 12 Dec 2011 15:29:07 +0100, Mel Gorman <mel at csn.ul.ie> wrote:

> On Fri, Nov 18, 2011 at 05:43:11PM +0100, Marek Szyprowski wrote:
>> From: Michal Nazarewicz <mina86 at mina86.com>
>>
>> This commit exports some of the functions from compaction.c file
>> outside of it adding their declaration into internal.h header
>> file so that other mm related code can use them.
>>
>> This forced compaction.c to always be compiled (as opposed to being
>> compiled only if CONFIG_COMPACTION is defined) but as to avoid
>> introducing code that user did not ask for, part of the compaction.c
>> is now wrapped in on #ifdef.
>>
>> Signed-off-by: Michal Nazarewicz <mina86 at mina86.com>
>> Signed-off-by: Marek Szyprowski <m.szyprowski at samsung.com>
>> ---
>>  mm/Makefile     |    3 +-
>>  mm/compaction.c |  112 +++++++++++++++++++++++--------------------------------
>>  mm/internal.h   |   35 +++++++++++++++++
>>  3 files changed, 83 insertions(+), 67 deletions(-)
>>
>> diff --git a/mm/Makefile b/mm/Makefile
>> index 50ec00e..24ed801 100644
>> --- a/mm/Makefile
>> +++ b/mm/Makefile
>> @@ -13,7 +13,7 @@ obj-y			:= filemap.o mempool.o oom_kill.o fadvise.o \
>>  			   readahead.o swap.o truncate.o vmscan.o shmem.o \
>>  			   prio_tree.o util.o mmzone.o vmstat.o backing-dev.o \
>>  			   page_isolation.o mm_init.o mmu_context.o percpu.o \
>> -			   $(mmu-y)
>> +			   $(mmu-y) compaction.o
>
> That should be
>
> compaction.o $(mmu-y)
>
> for consistency.
>
> Overall, this patch implies that CMA is always compiled in.

Not really.  But yes, it produces some bloat when neither CMA nor
compaction are compiled.  I assume that linker will be able to deal
with that (since the functions are not EXPORT_SYMBOL'ed).

Note also that the was majority of compaction.c is #ifdef'd though
so only a handful of functions are compiled.

> Why not just make CMA depend on COMPACTION to keep things simplier?

I could imagine that someone would want to have CMA but not compaction,
hence I decided to give that choice.

> For example, if you enable CMA and do not enable COMPACTION, you
> lose things like the vmstat counters that can aid debugging. In
> fact, as parts of compaction.c are using defines like COMPACTBLOCKS,
> I'm not even sure compaction.c can compile without CONFIG_COMPACTION
> because of the vmstat stuff.

-- 
Best regards,                                         _     _
.o. | Liege of Serenely Enlightened Majesty of      o' \,=./ `o
..o | Computer Science,  Michał “mina86” Nazarewicz    (o o)
ooo +----<email/xmpp: mpn at google.com>--------------ooO--(_)--Ooo--



More information about the linux-arm-kernel mailing list