All of lore.kernel.org
 help / color / mirror / Atom feed
From: Minchan Kim <minchan@kernel.org>
To: linux-mm@kvack.org
Cc: linux-kernel@vger.kernel.org,
	Michael Kerrisk <mtk.manpages@gmail.com>,
	Arun Sharma <asharma@fb.com>,
	John Stultz <john.stultz@linaro.org>, Mel Gorman <mel@csn.ul.ie>,
	Hugh Dickins <hughd@google.com>,
	Dave Hansen <dave@linux.vnet.ibm.com>,
	Rik van Riel <riel@redhat.com>, Neil Brown <neilb@suse.de>,
	Mike Hommey <mh@glandium.org>, Taras Glek <tglek@mozilla.com>,
	KOSAKI Motohiro <kosaki.motohiro@jp.fujitsu.com>,
	KAMEZAWA Hiroyuki <kamezawa.hiroyu@jp.fujitsu.com>,
	Jason Evans <je@fb.com>,
	sanjay@google.com, Paul Turner <pjt@google.com>,
	Johannes Weiner <hannes@cmpxchg.org>,
	Michel Lespinasse <walken@google.com>,
	Andrew Morton <akpm@linux-foundation.org>,
	Minchan Kim <minchan@kernel.org>
Subject: [RFC v7 07/11] keep mm_struct to vrange when system call context
Date: Tue, 12 Mar 2013 16:38:31 +0900	[thread overview]
Message-ID: <1363073915-25000-8-git-send-email-minchan@kernel.org> (raw)
In-Reply-To: <1363073915-25000-1-git-send-email-minchan@kernel.org>

We need mm_struct for discarding vrange pages in kswapd context.
It's a preparatoin for it.

Signed-off-by: Minchan Kim <minchan@kernel.org>
---
 include/linux/vrange.h |  1 +
 mm/vrange.c            | 20 +++++++++++---------
 2 files changed, 12 insertions(+), 9 deletions(-)

diff --git a/include/linux/vrange.h b/include/linux/vrange.h
index 24ed4c1..5238a67 100644
--- a/include/linux/vrange.h
+++ b/include/linux/vrange.h
@@ -11,6 +11,7 @@ static DECLARE_RWSEM(vrange_fork_lock);
 struct vrange {
 	struct interval_tree_node node;
 	bool purged;
+	struct mm_struct *mm;
 };
 
 #define vrange_entry(ptr) \
diff --git a/mm/vrange.c b/mm/vrange.c
index 89fcae4..f4c1d04 100644
--- a/mm/vrange.c
+++ b/mm/vrange.c
@@ -29,8 +29,9 @@ static inline void __set_vrange(struct vrange *range,
 }
 
 static void __add_range(struct vrange *range,
-				struct rb_root *root)
+			struct rb_root *root, struct mm_struct *mm)
 {
+	range->mm = mm;
 	interval_tree_insert(&range->node, root);
 }
 
@@ -52,11 +53,12 @@ static void free_vrange(struct vrange *range)
 
 static inline void range_resize(struct rb_root *root,
 		struct vrange *range,
-		unsigned long start, unsigned long end)
+		unsigned long start, unsigned long end,
+		struct mm_struct *mm)
 {
 	__remove_range(range, root);
 	__set_vrange(range, start, end);
-	__add_range(range, root);
+	__add_range(range, root, mm);
 }
 
 int add_vrange(struct mm_struct *mm,
@@ -95,8 +97,7 @@ int add_vrange(struct mm_struct *mm,
 
 	__set_vrange(new_range, start, end);
 	new_range->purged = purged;
-
-	__add_range(new_range, root);
+	__add_range(new_range, root, mm);
 out:
 	vrange_unlock(mm);
 	return 0;
@@ -129,15 +130,16 @@ int remove_vrange(struct mm_struct *mm,
 			__remove_range(range, root);
 			free_vrange(range);
 		} else if (node->start >= start) {
-			range_resize(root, range, end, node->last);
+			range_resize(root, range, end, node->last, mm);
 		} else if (node->last <= end) {
-			range_resize(root, range, node->start, start);
+			range_resize(root, range, node->start, start, mm);
 		} else {
 			used_new = true;
 			__set_vrange(new_range, end, node->last);
 			new_range->purged = range->purged;
-			range_resize(root, range, node->start, start);
-			__add_range(new_range, root);
+			new_range->mm = mm;
+			range_resize(root, range, node->start, start, mm);
+			__add_range(new_range, root, mm);
 			break;
 		}
 
-- 
1.8.1.1

--
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>

WARNING: multiple messages have this Message-ID (diff)
From: Minchan Kim <minchan@kernel.org>
To: linux-mm@kvack.org
Cc: linux-kernel@vger.kernel.org,
	Michael Kerrisk <mtk.manpages@gmail.com>,
	Arun Sharma <asharma@fb.com>,
	John Stultz <john.stultz@linaro.org>, Mel Gorman <mel@csn.ul.ie>,
	Hugh Dickins <hughd@google.com>,
	Dave Hansen <dave@linux.vnet.ibm.com>,
	Rik van Riel <riel@redhat.com>, Neil Brown <neilb@suse.de>,
	Mike Hommey <mh@glandium.org>, Taras Glek <tglek@mozilla.com>,
	KOSAKI Motohiro <kosaki.motohiro@jp.fujitsu.com>,
	KAMEZAWA Hiroyuki <kamezawa.hiroyu@jp.fujitsu.com>,
	Jason Evans <je@fb.com>,
	sanjay@google.com, Paul Turner <pjt@google.com>,
	Johannes Weiner <hannes@cmpxchg.org>,
	Michel Lespinasse <walken@google.com>,
	Andrew Morton <akpm@linux-foundation.org>,
	Minchan Kim <minchan@kernel.org>
Subject: [RFC v7 07/11] keep mm_struct to vrange when system call context
Date: Tue, 12 Mar 2013 16:38:31 +0900	[thread overview]
Message-ID: <1363073915-25000-8-git-send-email-minchan@kernel.org> (raw)
In-Reply-To: <1363073915-25000-1-git-send-email-minchan@kernel.org>

We need mm_struct for discarding vrange pages in kswapd context.
It's a preparatoin for it.

Signed-off-by: Minchan Kim <minchan@kernel.org>
---
 include/linux/vrange.h |  1 +
 mm/vrange.c            | 20 +++++++++++---------
 2 files changed, 12 insertions(+), 9 deletions(-)

diff --git a/include/linux/vrange.h b/include/linux/vrange.h
index 24ed4c1..5238a67 100644
--- a/include/linux/vrange.h
+++ b/include/linux/vrange.h
@@ -11,6 +11,7 @@ static DECLARE_RWSEM(vrange_fork_lock);
 struct vrange {
 	struct interval_tree_node node;
 	bool purged;
+	struct mm_struct *mm;
 };
 
 #define vrange_entry(ptr) \
diff --git a/mm/vrange.c b/mm/vrange.c
index 89fcae4..f4c1d04 100644
--- a/mm/vrange.c
+++ b/mm/vrange.c
@@ -29,8 +29,9 @@ static inline void __set_vrange(struct vrange *range,
 }
 
 static void __add_range(struct vrange *range,
-				struct rb_root *root)
+			struct rb_root *root, struct mm_struct *mm)
 {
+	range->mm = mm;
 	interval_tree_insert(&range->node, root);
 }
 
@@ -52,11 +53,12 @@ static void free_vrange(struct vrange *range)
 
 static inline void range_resize(struct rb_root *root,
 		struct vrange *range,
-		unsigned long start, unsigned long end)
+		unsigned long start, unsigned long end,
+		struct mm_struct *mm)
 {
 	__remove_range(range, root);
 	__set_vrange(range, start, end);
-	__add_range(range, root);
+	__add_range(range, root, mm);
 }
 
 int add_vrange(struct mm_struct *mm,
@@ -95,8 +97,7 @@ int add_vrange(struct mm_struct *mm,
 
 	__set_vrange(new_range, start, end);
 	new_range->purged = purged;
-
-	__add_range(new_range, root);
+	__add_range(new_range, root, mm);
 out:
 	vrange_unlock(mm);
 	return 0;
@@ -129,15 +130,16 @@ int remove_vrange(struct mm_struct *mm,
 			__remove_range(range, root);
 			free_vrange(range);
 		} else if (node->start >= start) {
-			range_resize(root, range, end, node->last);
+			range_resize(root, range, end, node->last, mm);
 		} else if (node->last <= end) {
-			range_resize(root, range, node->start, start);
+			range_resize(root, range, node->start, start, mm);
 		} else {
 			used_new = true;
 			__set_vrange(new_range, end, node->last);
 			new_range->purged = range->purged;
-			range_resize(root, range, node->start, start);
-			__add_range(new_range, root);
+			new_range->mm = mm;
+			range_resize(root, range, node->start, start, mm);
+			__add_range(new_range, root, mm);
 			break;
 		}
 
-- 
1.8.1.1


  parent reply	other threads:[~2013-03-12  7:38 UTC|newest]

Thread overview: 66+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2013-03-12  7:38 [RFC v7 00/11] Support vrange for anonymous page Minchan Kim
2013-03-12  7:38 ` Minchan Kim
2013-03-12  7:38 ` [RFC v7 01/11] vrange: enable generic interval tree Minchan Kim
2013-03-12  7:38   ` Minchan Kim
2013-03-12  7:38 ` [RFC v7 02/11] add vrange basic data structure and functions Minchan Kim
2013-03-12  7:38   ` Minchan Kim
2013-03-12  7:38 ` [RFC v7 03/11] add new system call vrange(2) Minchan Kim
2013-03-12  7:38   ` Minchan Kim
2013-03-12  7:38 ` [RFC v7 04/11] add proc/pid/vrange information Minchan Kim
2013-03-12  7:38   ` Minchan Kim
2013-03-12  7:38 ` [RFC v7 05/11] Add purge operation Minchan Kim
2013-03-12  7:38   ` Minchan Kim
2013-03-12  7:38 ` [RFC v7 06/11] send SIGBUS when user try to access purged page Minchan Kim
2013-03-12  7:38   ` Minchan Kim
2013-03-12  7:38 ` Minchan Kim [this message]
2013-03-12  7:38   ` [RFC v7 07/11] keep mm_struct to vrange when system call context Minchan Kim
2013-03-12  7:38 ` [RFC v7 08/11] add LRU handling for victim vrange Minchan Kim
2013-03-12  7:38   ` Minchan Kim
2013-03-12  7:38 ` [RFC v7 09/11] Get rid of depenceny that all pages is from a zone in shrink_page_list Minchan Kim
2013-03-12  7:38   ` Minchan Kim
2013-03-12  7:38 ` [RFC v7 10/11] Purging vrange pages without swap Minchan Kim
2013-03-12  7:38   ` Minchan Kim
2013-03-12  7:38 ` [RFC v7 11/11] add purged page information in vmstat Minchan Kim
2013-03-12  7:38   ` Minchan Kim
2013-03-12 23:16 ` [RFC v7 00/11] Support vrange for anonymous page Paul Turner
2013-03-12 23:16   ` Paul Turner
2013-03-13  6:44   ` Minchan Kim
2013-03-13  6:44     ` Minchan Kim
2013-03-21  1:29 ` John Stultz
2013-03-21  1:29   ` John Stultz
2013-03-22  6:01   ` Minchan Kim
2013-03-22  6:01     ` Minchan Kim
2013-03-22 17:06     ` John Stultz
2013-03-22 17:06       ` John Stultz
2013-03-25  8:42       ` Minchan Kim
2013-03-25  8:42         ` Minchan Kim
2013-03-27  0:26         ` John Stultz
2013-03-27  0:26           ` John Stultz
2013-03-27  8:03           ` Minchan Kim
2013-03-27  8:03             ` Minchan Kim
2013-03-30  0:05             ` John Stultz
2013-03-30  0:05               ` John Stultz
2013-04-01  7:57               ` Minchan Kim
2013-04-01  7:57                 ` Minchan Kim
2013-03-25 17:16 ` Bartlomiej Zolnierkiewicz
2013-03-25 17:16   ` Bartlomiej Zolnierkiewicz
2013-03-27  7:18   ` Minchan Kim
2013-03-27  7:18     ` Minchan Kim
2013-04-10 20:22 ` KOSAKI Motohiro
2013-04-10 20:22   ` KOSAKI Motohiro
2013-04-11  6:55   ` Minchan Kim
2013-04-11  6:55     ` Minchan Kim
2013-04-11  7:20     ` KOSAKI Motohiro
2013-04-11  7:20       ` KOSAKI Motohiro
2013-04-11  8:02       ` Minchan Kim
2013-04-11  8:02         ` Minchan Kim
2013-04-11  8:15         ` KOSAKI Motohiro
2013-04-11  8:15           ` KOSAKI Motohiro
2013-04-11  8:31           ` Minchan Kim
2013-04-11  8:31             ` Minchan Kim
2013-04-11 15:01             ` KOSAKI Motohiro
2013-04-11 15:01               ` KOSAKI Motohiro
2013-04-14  7:42               ` Minchan Kim
2013-04-14  7:42                 ` Minchan Kim
2013-04-16  3:33                 ` John Stultz
2013-04-16  3:33                   ` John Stultz

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=1363073915-25000-8-git-send-email-minchan@kernel.org \
    --to=minchan@kernel.org \
    --cc=akpm@linux-foundation.org \
    --cc=asharma@fb.com \
    --cc=dave@linux.vnet.ibm.com \
    --cc=hannes@cmpxchg.org \
    --cc=hughd@google.com \
    --cc=je@fb.com \
    --cc=john.stultz@linaro.org \
    --cc=kamezawa.hiroyu@jp.fujitsu.com \
    --cc=kosaki.motohiro@jp.fujitsu.com \
    --cc=linux-kernel@vger.kernel.org \
    --cc=linux-mm@kvack.org \
    --cc=mel@csn.ul.ie \
    --cc=mh@glandium.org \
    --cc=mtk.manpages@gmail.com \
    --cc=neilb@suse.de \
    --cc=pjt@google.com \
    --cc=riel@redhat.com \
    --cc=sanjay@google.com \
    --cc=tglek@mozilla.com \
    --cc=walken@google.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 an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.