aboutsummaryrefslogtreecommitdiffstats
path: root/mm
diff options
context:
space:
mode:
authordavem <davem>2001-11-08 05:13:14 +0000
committerdavem <davem>2001-11-08 05:13:14 +0000
commiteb3e1cda26f83567d2491fad261d0c48a936430c (patch)
tree0e97cec09435b37c725e3c271fa6b28052f100f2 /mm
parent9d7226c0047d6fe99e2aa8a3946e64f0ea360e33 (diff)
downloadnetdev-vger-cvs-eb3e1cda26f83567d2491fad261d0c48a936430c.tar.gz
Merge mainline to 2.4.15-pre1
Diffstat (limited to 'mm')
-rw-r--r--mm/page_alloc.c15
-rw-r--r--mm/swap.c16
-rw-r--r--mm/vmscan.c4
3 files changed, 20 insertions, 15 deletions
diff --git a/mm/page_alloc.c b/mm/page_alloc.c
index d26059077..c3234a648 100644
--- a/mm/page_alloc.c
+++ b/mm/page_alloc.c
@@ -80,9 +80,9 @@ static void __free_pages_ok (struct page *page, unsigned int order)
BUG();
if (PageLocked(page))
BUG();
- if (PageActive(page))
+ if (PageLRU(page))
BUG();
- if (PageInactive(page))
+ if (PageActive(page))
BUG();
page->flags &= ~((1<<PG_referenced) | (1<<PG_dirty));
@@ -203,7 +203,10 @@ static struct page * rmqueue(zone_t *zone, unsigned int order)
set_page_count(page, 1);
if (BAD_RANGE(zone,page))
BUG();
- DEBUG_LRU_PAGE(page);
+ if (PageLRU(page))
+ BUG();
+ if (PageActive(page))
+ BUG();
return page;
}
curr_order++;
@@ -268,9 +271,9 @@ static struct page * balance_classzone(zone_t * classzone, unsigned int gfp_mask
BUG();
if (PageLocked(page))
BUG();
- if (PageActive(page))
+ if (PageLRU(page))
BUG();
- if (PageInactive(page))
+ if (PageActive(page))
BUG();
if (PageDirty(page))
BUG();
@@ -425,7 +428,7 @@ unsigned long get_zeroed_page(unsigned int gfp_mask)
void page_cache_release(struct page *page)
{
if (!PageReserved(page) && put_page_testzero(page)) {
- if (PageActive(page) || PageInactive(page))
+ if (PageLRU(page))
lru_cache_del(page);
__free_pages_ok(page, 0);
}
diff --git a/mm/swap.c b/mm/swap.c
index 1cb039cbd..7ea683cc9 100644
--- a/mm/swap.c
+++ b/mm/swap.c
@@ -38,7 +38,7 @@ pager_daemon_t pager_daemon = {
*/
static inline void activate_page_nolock(struct page * page)
{
- if (PageInactive(page)) {
+ if (PageLRU(page) && !PageActive(page)) {
del_page_from_inactive_list(page);
add_page_to_active_list(page);
}
@@ -57,7 +57,7 @@ void activate_page(struct page * page)
*/
void lru_cache_add(struct page * page)
{
- if (!PageActive(page) && !PageInactive(page)) {
+ if (!TestSetPageLRU(page)) {
spin_lock(&pagemap_lru_lock);
add_page_to_inactive_list(page);
spin_unlock(&pagemap_lru_lock);
@@ -73,12 +73,12 @@ void lru_cache_add(struct page * page)
*/
void __lru_cache_del(struct page * page)
{
- if (PageActive(page)) {
- del_page_from_active_list(page);
- } else if (PageInactive(page)) {
- del_page_from_inactive_list(page);
- } else {
-// printk("VM: __lru_cache_del, found unknown page ?!\n");
+ if (TestClearPageLRU(page)) {
+ if (PageActive(page)) {
+ del_page_from_active_list(page);
+ } else {
+ del_page_from_inactive_list(page);
+ }
}
}
diff --git a/mm/vmscan.c b/mm/vmscan.c
index 864a8d77d..c5d914f58 100644
--- a/mm/vmscan.c
+++ b/mm/vmscan.c
@@ -347,7 +347,9 @@ static int shrink_cache(int nr_pages, zone_t * classzone, unsigned int gfp_mask,
page = list_entry(entry, struct page, lru);
- if (unlikely(!PageInactive(page)))
+ if (unlikely(!PageLRU(page)))
+ BUG();
+ if (unlikely(PageActive(page)))
BUG();
list_del(entry);