lkml.org 
[lkml]   [2013]   [Oct]   [23]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
/
Date
From
SubjectRe: [RFC PATCH v4 06/40] mm: Demarcate and maintain pageblocks in region-order in the zones' freelists
On 10/23/2013 03:47 PM, Johannes Weiner wrote:
> On Thu, Sep 26, 2013 at 04:44:56AM +0530, Srivatsa S. Bhat wrote:
>> --- a/mm/page_alloc.c
>> +++ b/mm/page_alloc.c
>> @@ -517,6 +517,111 @@ static inline int page_is_buddy(struct page *page, struct page *buddy,
>> return 0;
>> }
>>
>> +static void add_to_freelist(struct page *page, struct free_list *free_list)
>> +{
>> + struct list_head *prev_region_list, *lru;
>> + struct mem_region_list *region;
>> + int region_id, i;
>> +
>> + lru = &page->lru;
>> + region_id = page_zone_region_id(page);
>> +
>> + region = &free_list->mr_list[region_id];
>> + region->nr_free++;
>> +
>> + if (region->page_block) {
>> + list_add_tail(lru, region->page_block);
>> + return;
>> + }
>> +
>> +#ifdef CONFIG_DEBUG_PAGEALLOC
>> + WARN(region->nr_free != 1, "%s: nr_free is not unity\n", __func__);
>> +#endif
>> +
>> + if (!list_empty(&free_list->list)) {
>> + for (i = region_id - 1; i >= 0; i--) {
>> + if (free_list->mr_list[i].page_block) {
>> + prev_region_list =
>> + free_list->mr_list[i].page_block;
>> + goto out;
>> + }
>> + }
>> + }
>> +
>> + /* This is the first region, so add to the head of the list */
>> + prev_region_list = &free_list->list;
>> +
>> +out:
>> + list_add(lru, prev_region_list);
>> +
>> + /* Save pointer to page block of this region */
>> + region->page_block = lru;
>
> "Pageblock" has a different meaning in the allocator already.
>
> The things you string up here are just called pages, regardless of
> which order they are in and how many pages they can be split into.
>

Ah, yes. I'll fix that.

Regards,
Srivatsa S. Bhat



\
 
 \ /
  Last update: 2013-10-23 18:21    [W:0.079 / U:0.300 seconds]
©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site