Shrinks my vmlinux by an astonishing 28k. text data bss dec hex filename 3038796 589890 150612 3779298 39aae2 vmlinux.before 3009761 590107 150612 3750480 393a50 vmlinux.after --- 25-akpm/include/linux/mm.h | 17 +---------------- 25-akpm/mm/swap.c | 21 +++++++++++++++++++++ 2 files changed, 22 insertions(+), 16 deletions(-) diff -puN include/linux/mm.h~uninline-put_page include/linux/mm.h --- 25/include/linux/mm.h~uninline-put_page 2004-04-11 15:50:59.450637392 -0700 +++ 25-akpm/include/linux/mm.h 2004-04-11 15:50:59.455636632 -0700 @@ -269,22 +269,7 @@ static inline void get_page(struct page atomic_inc(&page->count); } -static inline void put_page(struct page *page) -{ - if (unlikely(PageCompound(page))) { - page = (struct page *)page->private; - if (put_page_testzero(page)) { - if (page[1].mapping) { /* destructor? */ - (*(void (*)(struct page *))page[1].mapping)(page); - } else { - __page_cache_release(page); - } - } - return; - } - if (!PageReserved(page) && put_page_testzero(page)) - __page_cache_release(page); -} +void put_page(struct page *page); #else /* CONFIG_HUGETLB_PAGE */ diff -puN mm/swap.c~uninline-put_page mm/swap.c --- 25/mm/swap.c~uninline-put_page 2004-04-11 15:50:59.451637240 -0700 +++ 25-akpm/mm/swap.c 2004-04-11 15:50:59.456636480 -0700 @@ -34,6 +34,27 @@ /* How many pages do we try to swap or page in/out together? */ int page_cluster; +#ifdef CONFIG_HUGETLB_PAGE + +void put_page(struct page *page) +{ + if (unlikely(PageCompound(page))) { + page = (struct page *)page->private; + if (put_page_testzero(page)) { + if (page[1].mapping) { /* destructor? */ + (*(void (*)(struct page *))page[1].mapping)(page); + } else { + __page_cache_release(page); + } + } + return; + } + if (!PageReserved(page) && put_page_testzero(page)) + __page_cache_release(page); +} +EXPORT_SYMBOL(put_page); +#endif + /* * Writeback is about to end against a page which has been marked for immediate * reclaim. If it still appears to be reclaimable, move it to the tail of the _