1
0
Fork 0

zsmalloc: use first_page rather than page

Clean up function parameter "struct page".  Many functions of zsmalloc
expect that page paramter is "first_page" so use "first_page" rather
than "page" for code readability.

Signed-off-by: Minchan Kim <minchan@kernel.org>
Reviewed-by: Sergey Senozhatsky <sergey.senozhatsky@gmail.com>
Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
hifive-unleashed-5.1
Minchan Kim 2016-05-20 16:59:36 -07:00 committed by Linus Torvalds
parent eae08dcab8
commit a42094676f
1 changed files with 32 additions and 30 deletions

View File

@ -413,26 +413,28 @@ static int is_last_page(struct page *page)
return PagePrivate2(page); return PagePrivate2(page);
} }
static void get_zspage_mapping(struct page *page, unsigned int *class_idx, static void get_zspage_mapping(struct page *first_page,
unsigned int *class_idx,
enum fullness_group *fullness) enum fullness_group *fullness)
{ {
unsigned long m; unsigned long m;
BUG_ON(!is_first_page(page)); BUG_ON(!is_first_page(first_page));
m = (unsigned long)page->mapping; m = (unsigned long)first_page->mapping;
*fullness = m & FULLNESS_MASK; *fullness = m & FULLNESS_MASK;
*class_idx = (m >> FULLNESS_BITS) & CLASS_IDX_MASK; *class_idx = (m >> FULLNESS_BITS) & CLASS_IDX_MASK;
} }
static void set_zspage_mapping(struct page *page, unsigned int class_idx, static void set_zspage_mapping(struct page *first_page,
unsigned int class_idx,
enum fullness_group fullness) enum fullness_group fullness)
{ {
unsigned long m; unsigned long m;
BUG_ON(!is_first_page(page)); BUG_ON(!is_first_page(first_page));
m = ((class_idx & CLASS_IDX_MASK) << FULLNESS_BITS) | m = ((class_idx & CLASS_IDX_MASK) << FULLNESS_BITS) |
(fullness & FULLNESS_MASK); (fullness & FULLNESS_MASK);
page->mapping = (struct address_space *)m; first_page->mapping = (struct address_space *)m;
} }
/* /*
@ -625,14 +627,14 @@ static inline void zs_pool_stat_destroy(struct zs_pool *pool)
* the pool (not yet implemented). This function returns fullness * the pool (not yet implemented). This function returns fullness
* status of the given page. * status of the given page.
*/ */
static enum fullness_group get_fullness_group(struct page *page) static enum fullness_group get_fullness_group(struct page *first_page)
{ {
int inuse, max_objects; int inuse, max_objects;
enum fullness_group fg; enum fullness_group fg;
BUG_ON(!is_first_page(page)); BUG_ON(!is_first_page(first_page));
inuse = page->inuse; inuse = first_page->inuse;
max_objects = page->objects; max_objects = first_page->objects;
if (inuse == 0) if (inuse == 0)
fg = ZS_EMPTY; fg = ZS_EMPTY;
@ -652,12 +654,12 @@ static enum fullness_group get_fullness_group(struct page *page)
* have. This functions inserts the given zspage into the freelist * have. This functions inserts the given zspage into the freelist
* identified by <class, fullness_group>. * identified by <class, fullness_group>.
*/ */
static void insert_zspage(struct page *page, struct size_class *class, static void insert_zspage(struct page *first_page, struct size_class *class,
enum fullness_group fullness) enum fullness_group fullness)
{ {
struct page **head; struct page **head;
BUG_ON(!is_first_page(page)); BUG_ON(!is_first_page(first_page));
if (fullness >= _ZS_NR_FULLNESS_GROUPS) if (fullness >= _ZS_NR_FULLNESS_GROUPS)
return; return;
@ -667,7 +669,7 @@ static void insert_zspage(struct page *page, struct size_class *class,
head = &class->fullness_list[fullness]; head = &class->fullness_list[fullness];
if (!*head) { if (!*head) {
*head = page; *head = first_page;
return; return;
} }
@ -675,21 +677,21 @@ static void insert_zspage(struct page *page, struct size_class *class,
* We want to see more ZS_FULL pages and less almost * We want to see more ZS_FULL pages and less almost
* empty/full. Put pages with higher ->inuse first. * empty/full. Put pages with higher ->inuse first.
*/ */
list_add_tail(&page->lru, &(*head)->lru); list_add_tail(&first_page->lru, &(*head)->lru);
if (page->inuse >= (*head)->inuse) if (first_page->inuse >= (*head)->inuse)
*head = page; *head = first_page;
} }
/* /*
* This function removes the given zspage from the freelist identified * This function removes the given zspage from the freelist identified
* by <class, fullness_group>. * by <class, fullness_group>.
*/ */
static void remove_zspage(struct page *page, struct size_class *class, static void remove_zspage(struct page *first_page, struct size_class *class,
enum fullness_group fullness) enum fullness_group fullness)
{ {
struct page **head; struct page **head;
BUG_ON(!is_first_page(page)); BUG_ON(!is_first_page(first_page));
if (fullness >= _ZS_NR_FULLNESS_GROUPS) if (fullness >= _ZS_NR_FULLNESS_GROUPS)
return; return;
@ -698,11 +700,11 @@ static void remove_zspage(struct page *page, struct size_class *class,
BUG_ON(!*head); BUG_ON(!*head);
if (list_empty(&(*head)->lru)) if (list_empty(&(*head)->lru))
*head = NULL; *head = NULL;
else if (*head == page) else if (*head == first_page)
*head = (struct page *)list_entry((*head)->lru.next, *head = (struct page *)list_entry((*head)->lru.next,
struct page, lru); struct page, lru);
list_del_init(&page->lru); list_del_init(&first_page->lru);
zs_stat_dec(class, fullness == ZS_ALMOST_EMPTY ? zs_stat_dec(class, fullness == ZS_ALMOST_EMPTY ?
CLASS_ALMOST_EMPTY : CLASS_ALMOST_FULL, 1); CLASS_ALMOST_EMPTY : CLASS_ALMOST_FULL, 1);
} }
@ -717,21 +719,21 @@ static void remove_zspage(struct page *page, struct size_class *class,
* fullness group. * fullness group.
*/ */
static enum fullness_group fix_fullness_group(struct size_class *class, static enum fullness_group fix_fullness_group(struct size_class *class,
struct page *page) struct page *first_page)
{ {
int class_idx; int class_idx;
enum fullness_group currfg, newfg; enum fullness_group currfg, newfg;
BUG_ON(!is_first_page(page)); BUG_ON(!is_first_page(first_page));
get_zspage_mapping(page, &class_idx, &currfg); get_zspage_mapping(first_page, &class_idx, &currfg);
newfg = get_fullness_group(page); newfg = get_fullness_group(first_page);
if (newfg == currfg) if (newfg == currfg)
goto out; goto out;
remove_zspage(page, class, currfg); remove_zspage(first_page, class, currfg);
insert_zspage(page, class, newfg); insert_zspage(first_page, class, newfg);
set_zspage_mapping(page, class_idx, newfg); set_zspage_mapping(first_page, class_idx, newfg);
out: out:
return newfg; return newfg;
@ -1234,11 +1236,11 @@ static bool can_merge(struct size_class *prev, int size, int pages_per_zspage)
return true; return true;
} }
static bool zspage_full(struct page *page) static bool zspage_full(struct page *first_page)
{ {
BUG_ON(!is_first_page(page)); BUG_ON(!is_first_page(first_page));
return page->inuse == page->objects; return first_page->inuse == first_page->objects;
} }
unsigned long zs_get_total_pages(struct zs_pool *pool) unsigned long zs_get_total_pages(struct zs_pool *pool)