linux-mm.kvack.org archive mirror
 help / color / mirror / Atom feed
From: KAMEZAWA Hiroyuki <kamezawa.hiroyu@jp.fujitsu.com>
To: Lee Schermerhorn <Lee.Schermerhorn@hp.com>
Cc: Daisuke Nishimura <nishimura@mxp.nes.nec.co.jp>,
	Andrew Morton <akpm@linux-foundation.org>,
	Rik van Riel <riel@redhat.com>,
	Kosaki Motohiro <kosaki.motohiro@jp.fujitsu.com>,
	Nick Piggin <npiggin@suse.de>,
	linux-mm@kvack.org, linux-kernel@vger.kernel.org,
	kernel-testers@vger.kernel.org
Subject: Re: [Experimental][PATCH] putback_lru_page rework
Date: Fri, 20 Jun 2008 10:13:52 +0900	[thread overview]
Message-ID: <20080620101352.e1200b8e.kamezawa.hiroyu@jp.fujitsu.com> (raw)
In-Reply-To: <1213886722.6398.29.camel@lts-notebook>

Lee-san, this is an additonal one..
Not-tested-yet, just by review.

Fixing page_lock() <-> zone->lock nesting of bad-behavior.

Before:
      lock_page()(TestSetPageLocked())
      spin_lock(zone->lock)
      unlock_page()
      spin_unlock(zone->lock)  
After:
      spin_lock(zone->lock)
      spin_unlock(zone->lock)

Including nit-pick fix. (I'll ask Kosaki-san to merge this to his 5/5)

Hmm...

---
 mm/vmscan.c |   25 +++++--------------------
 1 file changed, 5 insertions(+), 20 deletions(-)

Index: test-2.6.26-rc5-mm3/mm/vmscan.c
===================================================================
--- test-2.6.26-rc5-mm3.orig/mm/vmscan.c
+++ test-2.6.26-rc5-mm3/mm/vmscan.c
@@ -1106,7 +1106,7 @@ static unsigned long shrink_inactive_lis
 		if (nr_taken == 0)
 			goto done;
 
-		spin_lock(&zone->lru_lock);
+		spin_lock_irq(&zone->lru_lock);
 		/*
 		 * Put back any unfreeable pages.
 		 */
@@ -1136,9 +1136,8 @@ static unsigned long shrink_inactive_lis
 			}
 		}
   	} while (nr_scanned < max_scan);
-	spin_unlock(&zone->lru_lock);
+	spin_unlock_irq(&zone->lru_lock);
 done:
-	local_irq_enable();
 	pagevec_release(&pvec);
 	return nr_reclaimed;
 }
@@ -2438,7 +2437,7 @@ static void show_page_path(struct page *
  */
 static void check_move_unevictable_page(struct page *page, struct zone *zone)
 {
-
+retry:
 	ClearPageUnevictable(page); /* for page_evictable() */
 	if (page_evictable(page, NULL)) {
 		enum lru_list l = LRU_INACTIVE_ANON + page_is_file_cache(page);
@@ -2455,6 +2454,8 @@ static void check_move_unevictable_page(
 		 */
 		SetPageUnevictable(page);
 		list_move(&page->lru, &zone->lru[LRU_UNEVICTABLE].list);
+		if (page_evictable(page, NULL))
+			goto retry;
 	}
 }
 
@@ -2494,16 +2495,6 @@ void scan_mapping_unevictable_pages(stru
 				next = page_index;
 			next++;
 
-			if (TestSetPageLocked(page)) {
-				/*
-				 * OK, let's do it the hard way...
-				 */
-				if (zone)
-					spin_unlock_irq(&zone->lru_lock);
-				zone = NULL;
-				lock_page(page);
-			}
-
 			if (pagezone != zone) {
 				if (zone)
 					spin_unlock_irq(&zone->lru_lock);
@@ -2514,8 +2505,6 @@ void scan_mapping_unevictable_pages(stru
 			if (PageLRU(page) && PageUnevictable(page))
 				check_move_unevictable_page(page, zone);
 
-			unlock_page(page);
-
 		}
 		if (zone)
 			spin_unlock_irq(&zone->lru_lock);
@@ -2551,15 +2540,11 @@ void scan_zone_unevictable_pages(struct 
 		for (scan = 0;  scan < batch_size; scan++) {
 			struct page *page = lru_to_page(l_unevictable);
 
-			if (TestSetPageLocked(page))
-				continue;
-
 			prefetchw_prev_lru_page(page, l_unevictable, flags);
 
 			if (likely(PageLRU(page) && PageUnevictable(page)))
 				check_move_unevictable_page(page, zone);
 
-			unlock_page(page);
 		}
 		spin_unlock_irq(&zone->lru_lock);
 

--
To unsubscribe, send a message with 'unsubscribe linux-mm' in
the body to majordomo@kvack.org.  For more info on Linux MM,
see: http://www.linux-mm.org/ .
Don't email: <a href=mailto:"dont@kvack.org"> email@kvack.org </a>

  parent reply	other threads:[~2008-06-20  1:13 UTC|newest]

Thread overview: 100+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2008-06-12  5:59 2.6.26-rc5-mm3 Andrew Morton
2008-06-12  7:58 ` 2.6.26-rc5-mm3: kernel BUG at mm/vmscan.c:510 Alexey Dobriyan
2008-06-12  8:22   ` Andrew Morton
2008-06-12  8:23     ` Alexey Dobriyan
2008-06-12  8:44 ` [BUG] 2.6.26-rc5-mm3 kernel BUG at mm/filemap.c:575! Kamalesh Babulal
2008-06-12  8:57   ` Andrew Morton
2008-06-12 11:20     ` KAMEZAWA Hiroyuki
2008-06-13  1:44       ` [PATCH] fix double unlock_page() in " KAMEZAWA Hiroyuki
2008-06-13  2:13         ` Andrew Morton
2008-06-13 15:30           ` Lee Schermerhorn
2008-06-15  3:59             ` Kamalesh Babulal
2008-06-16 14:49             ` Lee Schermerhorn
2008-06-17  2:32             ` KAMEZAWA Hiroyuki
2008-06-17 15:26               ` Lee Schermerhorn
2008-06-13  4:34         ` Valdis.Kletnieks
2008-06-14 13:32         ` Kamalesh Babulal
2008-06-12 11:38     ` [BUG] " Nick Piggin
2008-06-13  0:25       ` KAMEZAWA Hiroyuki
2008-06-13  4:18   ` Valdis.Kletnieks
2008-06-13  7:16     ` Andrew Morton
2008-06-12 23:32 ` 2.6.26-rc5-mm3 Byron Bradley
2008-06-12 23:55   ` 2.6.26-rc5-mm3 Daniel Walker
2008-06-13  0:04     ` 2.6.26-rc5-mm3 Byron Bradley
2008-06-18 17:55   ` 2.6.26-rc5-mm3 Daniel Walker
2008-06-19  9:13     ` 2.6.26-rc5-mm3 Ingo Molnar
2008-06-19 14:39       ` 2.6.26-rc5-mm3 Daniel Walker
2008-06-17  7:35 ` [PATCH][RFC] fix kernel BUG at mm/migrate.c:719! in 2.6.26-rc5-mm3 Daisuke Nishimura
2008-06-17  7:47   ` [Bad page] trying to free locked page? (Re: [PATCH][RFC] fix kernel BUG at mm/migrate.c:719! in 2.6.26-rc5-mm3) Daisuke Nishimura
2008-06-17  9:03     ` KAMEZAWA Hiroyuki
2008-06-17  9:14       ` KOSAKI Motohiro
2008-06-17  9:15       ` Daisuke Nishimura
2008-06-17 18:29         ` Lee Schermerhorn
2008-06-17 20:00           ` [PATCH] unevictable mlocked pages: initialize mm member of munlock mm_walk structure Lee Schermerhorn
2008-06-18  3:33             ` KOSAKI Motohiro
2008-06-18  2:40           ` [Bad page] trying to free locked page? (Re: [PATCH][RFC] fix kernel BUG at mm/migrate.c:719! in 2.6.26-rc5-mm3) Daisuke Nishimura
2008-06-17 15:34     ` KOSAKI Motohiro
2008-06-18  2:32       ` Daisuke Nishimura
2008-06-18 10:20         ` KOSAKI Motohiro
2008-06-18  9:40     ` [Experimental][PATCH] putback_lru_page rework KAMEZAWA Hiroyuki
2008-06-18 11:36       ` KOSAKI Motohiro
2008-06-18 11:55         ` KAMEZAWA Hiroyuki
2008-06-19  8:00           ` Daisuke Nishimura
2008-06-19  8:24             ` KAMEZAWA Hiroyuki
2008-06-18 14:50       ` Daisuke Nishimura
2008-06-18 18:21       ` Lee Schermerhorn
2008-06-19  0:22         ` KAMEZAWA Hiroyuki
2008-06-19 14:45           ` Lee Schermerhorn
2008-06-20  0:47             ` KAMEZAWA Hiroyuki
2008-06-20  1:13             ` KAMEZAWA Hiroyuki [this message]
2008-06-20 17:10               ` Lee Schermerhorn
2008-06-20 20:41                 ` Lee Schermerhorn
2008-06-21  8:56                   ` KOSAKI Motohiro
2008-06-23  0:30                     ` KAMEZAWA Hiroyuki
2008-06-21  8:41                 ` KOSAKI Motohiro
2008-06-21  8:39               ` KOSAKI Motohiro
2008-06-19 15:32           ` kamezawa.hiroyu
2008-06-20 16:24             ` Lee Schermerhorn
2008-06-17 15:33   ` [PATCH][RFC] fix kernel BUG at mm/migrate.c:719! in 2.6.26-rc5-mm3 KOSAKI Motohiro
2008-06-18  1:54     ` Daisuke Nishimura
2008-06-18  4:41       ` Daisuke Nishimura
2008-06-18  4:59         ` KAMEZAWA Hiroyuki
2008-06-18  7:54         ` [PATCH][-mm] remove redundant page->mapping check KOSAKI Motohiro
2008-06-17 17:46   ` [PATCH][RFC] fix kernel BUG at mm/migrate.c:719! in 2.6.26-rc5-mm3 Lee Schermerhorn
2008-06-17 18:33     ` Hugh Dickins
2008-06-17 19:28       ` Lee Schermerhorn
2008-06-18  5:19         ` Nick Piggin
2008-06-18  2:59     ` Daisuke Nishimura
2008-06-18  1:13   ` KAMEZAWA Hiroyuki
2008-06-18  1:26     ` Daisuke Nishimura
2008-06-18  1:54     ` [PATCH] migration_entry_wait fix KAMEZAWA Hiroyuki
2008-06-18  5:26       ` KOSAKI Motohiro
2008-06-18  5:35       ` Nick Piggin
2008-06-18  6:04         ` KAMEZAWA Hiroyuki
2008-06-18  6:42           ` Nick Piggin
2008-06-18  6:52             ` KAMEZAWA Hiroyuki
2008-06-18  7:29               ` [PATCH -mm][BUGFIX] migration_entry_wait fix. v2 KAMEZAWA Hiroyuki
2008-06-18  7:26                 ` KOSAKI Motohiro
2008-06-18  7:40                 ` Nick Piggin
2008-06-19  6:59 ` [BUG][PATCH -mm] avoid BUG() in __stop_machine_run() Hidehiro Kawai
2008-06-19 10:12   ` Rusty Russell
2008-06-19 15:51     ` Jeremy Fitzhardinge
2008-06-20 13:21       ` Ingo Molnar
2008-06-23  3:55         ` Rusty Russell
2008-06-23 21:01           ` Ingo Molnar
2008-06-19 16:27 ` 2.6.26-rc5-mm3: BUG large value for HugePages_Rsvd Jon Tollefson
2008-06-19 17:16   ` Andy Whitcroft
2008-06-20  3:18     ` Jon Tollefson
2008-06-20 19:17   ` [RFC] hugetlb reservations -- MAP_PRIVATE fixes for split vmas Andy Whitcroft
2008-06-20 19:17     ` [PATCH 1/2] hugetlb reservations: move region tracking earlier Andy Whitcroft
2008-06-20 19:17     ` [PATCH 2/2] hugetlb reservations: fix hugetlb MAP_PRIVATE reservations across vma splits Andy Whitcroft
2008-06-23  7:33       ` Mel Gorman
2008-06-23  8:00       ` Mel Gorman
2008-06-23  9:53         ` Andy Whitcroft
2008-06-23 16:04     ` [RFC] hugetlb reservations -- MAP_PRIVATE fixes for split vmas Jon Tollefson
2008-06-23 17:35   ` [RFC] hugetlb reservations -- MAP_PRIVATE fixes for split vmas V2 Andy Whitcroft
2008-06-23 17:35     ` [PATCH 1/2] hugetlb reservations: move region tracking earlier Andy Whitcroft
2008-06-23 23:05       ` Mel Gorman
2008-06-23 17:35     ` [PATCH 2/2] hugetlb reservations: fix hugetlb MAP_PRIVATE reservations across vma splits V2 Andy Whitcroft
2008-06-23 23:08       ` Mel Gorman
2008-06-25 21:22     ` [RFC] hugetlb reservations -- MAP_PRIVATE fixes for split vmas V2 Jon Tollefson

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=20080620101352.e1200b8e.kamezawa.hiroyu@jp.fujitsu.com \
    --to=kamezawa.hiroyu@jp.fujitsu.com \
    --cc=Lee.Schermerhorn@hp.com \
    --cc=akpm@linux-foundation.org \
    --cc=kernel-testers@vger.kernel.org \
    --cc=kosaki.motohiro@jp.fujitsu.com \
    --cc=linux-kernel@vger.kernel.org \
    --cc=linux-mm@kvack.org \
    --cc=nishimura@mxp.nes.nec.co.jp \
    --cc=npiggin@suse.de \
    --cc=riel@redhat.com \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox