From: Peter Zijlstra <peterz@infradead.org>
To: Rik van Riel <riel@redhat.com>
Cc: linux-mm@kvack.org, akpm@linux-foundation.org,
aarcange@redhat.com, minchan@gmail.com,
kosaki.motohiro@gmail.com, andi@firstfloor.org,
hannes@cmpxchg.org, mel@csn.ul.ie, linux-kernel@vger.kernel.org,
Rik van Riel <riel@surriel.com>
Subject: Re: [PATCH -mm 1/7] mm: track free size between VMAs in VMA rbtree
Date: Thu, 21 Jun 2012 13:07:47 +0200 [thread overview]
Message-ID: <1340276867.21745.172.camel@twins> (raw)
In-Reply-To: <1340057126-31143-2-git-send-email-riel@redhat.com>
On Mon, 2012-06-18 at 18:05 -0400, Rik van Riel wrote:
> @@ -473,11 +524,17 @@ __vma_unlink(struct mm_struct *mm, struct vm_area_struct *vma,
> struct vm_area_struct *prev)
> {
> struct vm_area_struct *next = vma->vm_next;
> + struct rb_node *deepest;
>
> prev->vm_next = next;
> - if (next)
> + if (next) {
> next->vm_prev = prev;
> + adjust_free_gap(next);
> + }
> + deepest = rb_augment_erase_begin(&vma->vm_rb);
> rb_erase(&vma->vm_rb, &mm->mm_rb);
> + rb_augment_erase_end(deepest, vma_rb_augment_cb, NULL);
> +
> if (mm->mmap_cache == vma)
> mm->mmap_cache = prev;
> }
> @@ -1933,7 +2002,10 @@ detach_vmas_to_be_unmapped(struct mm_struct *mm, struct vm_area_struct *vma,
> insertion_point = (prev ? &prev->vm_next : &mm->mmap);
> vma->vm_prev = NULL;
> do {
> + struct rb_node *deepest;
> + deepest = rb_augment_erase_begin(&vma->vm_rb);
> rb_erase(&vma->vm_rb, &mm->mm_rb);
> + rb_augment_erase_end(deepest, vma_rb_augment_cb, NULL);
---
include/linux/rbtree.h | 8 ++++++++
1 file changed, 8 insertions(+)
diff --git a/include/linux/rbtree.h b/include/linux/rbtree.h
index 033b507..07c5843 100644
--- a/include/linux/rbtree.h
+++ b/include/linux/rbtree.h
@@ -155,6 +155,14 @@ extern struct rb_node *rb_augment_erase_begin(struct rb_node *node);
extern void rb_augment_erase_end(struct rb_node *node,
rb_augment_f func, void *data);
+static inline void rb_augment_erase(struct rb_node *node, struct rb_root *root,
+ rb_augment_f func, void *data)
+{
+ struct rb_node *deepest = rb_augment_erase_begin(node);
+ rb_erase(node, root);
+ rb_augment_erase_end(deepest, func, data);
+}
+
/* Find logical next and previous nodes in a tree */
extern struct rb_node *rb_next(const struct rb_node *);
extern struct rb_node *rb_prev(const struct rb_node *);
--
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: Peter Zijlstra <peterz@infradead.org>
To: Rik van Riel <riel@redhat.com>
Cc: linux-mm@kvack.org, akpm@linux-foundation.org,
aarcange@redhat.com, minchan@gmail.com,
kosaki.motohiro@gmail.com, andi@firstfloor.org,
hannes@cmpxchg.org, mel@csn.ul.ie, linux-kernel@vger.kernel.org,
Rik van Riel <riel@surriel.com>
Subject: Re: [PATCH -mm 1/7] mm: track free size between VMAs in VMA rbtree
Date: Thu, 21 Jun 2012 13:07:47 +0200 [thread overview]
Message-ID: <1340276867.21745.172.camel@twins> (raw)
In-Reply-To: <1340057126-31143-2-git-send-email-riel@redhat.com>
On Mon, 2012-06-18 at 18:05 -0400, Rik van Riel wrote:
> @@ -473,11 +524,17 @@ __vma_unlink(struct mm_struct *mm, struct vm_area_struct *vma,
> struct vm_area_struct *prev)
> {
> struct vm_area_struct *next = vma->vm_next;
> + struct rb_node *deepest;
>
> prev->vm_next = next;
> - if (next)
> + if (next) {
> next->vm_prev = prev;
> + adjust_free_gap(next);
> + }
> + deepest = rb_augment_erase_begin(&vma->vm_rb);
> rb_erase(&vma->vm_rb, &mm->mm_rb);
> + rb_augment_erase_end(deepest, vma_rb_augment_cb, NULL);
> +
> if (mm->mmap_cache == vma)
> mm->mmap_cache = prev;
> }
> @@ -1933,7 +2002,10 @@ detach_vmas_to_be_unmapped(struct mm_struct *mm, struct vm_area_struct *vma,
> insertion_point = (prev ? &prev->vm_next : &mm->mmap);
> vma->vm_prev = NULL;
> do {
> + struct rb_node *deepest;
> + deepest = rb_augment_erase_begin(&vma->vm_rb);
> rb_erase(&vma->vm_rb, &mm->mm_rb);
> + rb_augment_erase_end(deepest, vma_rb_augment_cb, NULL);
---
include/linux/rbtree.h | 8 ++++++++
1 file changed, 8 insertions(+)
diff --git a/include/linux/rbtree.h b/include/linux/rbtree.h
index 033b507..07c5843 100644
--- a/include/linux/rbtree.h
+++ b/include/linux/rbtree.h
@@ -155,6 +155,14 @@ extern struct rb_node *rb_augment_erase_begin(struct rb_node *node);
extern void rb_augment_erase_end(struct rb_node *node,
rb_augment_f func, void *data);
+static inline void rb_augment_erase(struct rb_node *node, struct rb_root *root,
+ rb_augment_f func, void *data)
+{
+ struct rb_node *deepest = rb_augment_erase_begin(node);
+ rb_erase(node, root);
+ rb_augment_erase_end(deepest, func, data);
+}
+
/* Find logical next and previous nodes in a tree */
extern struct rb_node *rb_next(const struct rb_node *);
extern struct rb_node *rb_prev(const struct rb_node *);
next prev parent reply other threads:[~2012-06-21 11:07 UTC|newest]
Thread overview: 58+ messages / expand[flat|nested] mbox.gz Atom feed top
2012-06-18 22:05 [PATCH -mm 0/7] mm: scalable and unified arch_get_unmapped_area Rik van Riel
2012-06-18 22:05 ` Rik van Riel
2012-06-18 22:05 ` [PATCH -mm 1/7] mm: track free size between VMAs in VMA rbtree Rik van Riel
2012-06-18 22:05 ` Rik van Riel
2012-06-19 23:25 ` Andrew Morton
2012-06-19 23:25 ` Andrew Morton
2012-06-21 11:01 ` Peter Zijlstra
2012-06-21 11:01 ` Peter Zijlstra
2012-06-21 11:07 ` Peter Zijlstra [this message]
2012-06-21 11:07 ` Peter Zijlstra
2012-06-21 14:47 ` Mel Gorman
2012-06-21 14:47 ` Mel Gorman
2012-06-18 22:05 ` [PATCH -mm 2/7] mm: get unmapped area from VMA tree Rik van Riel
2012-06-18 22:05 ` Rik van Riel
2012-06-21 9:01 ` Johannes Weiner
2012-06-21 9:01 ` Johannes Weiner
2012-06-21 13:17 ` Rik van Riel
2012-06-21 13:17 ` Rik van Riel
2012-06-21 16:50 ` Rik van Riel
2012-06-21 16:50 ` Rik van Riel
2012-06-21 16:16 ` Mel Gorman
2012-06-21 16:16 ` Mel Gorman
2012-06-21 17:27 ` Rik van Riel
2012-06-21 17:27 ` Rik van Riel
2012-06-21 21:06 ` Peter Zijlstra
2012-06-21 21:06 ` Peter Zijlstra
2012-06-18 22:05 ` [PATCH -mm 3/7] Allow each architecture to specify the address range that can be used for this allocation Rik van Riel
2012-06-18 22:05 ` Rik van Riel
2012-06-18 22:05 ` [PATCH -mm 4/7] mm: make page colouring code generic Rik van Riel
2012-06-18 22:05 ` Rik van Riel
2012-06-19 23:27 ` Andrew Morton
2012-06-19 23:27 ` Andrew Morton
2012-06-21 17:52 ` Rik van Riel
2012-06-21 17:52 ` Rik van Riel
2012-06-21 19:22 ` Borislav Petkov
2012-06-21 19:22 ` Borislav Petkov
2012-06-21 11:20 ` Peter Zijlstra
2012-06-21 11:20 ` Peter Zijlstra
2012-06-21 14:30 ` Rik van Riel
2012-06-21 14:30 ` Rik van Riel
2012-06-21 17:40 ` Andrew Morton
2012-06-21 17:40 ` Andrew Morton
2012-06-21 17:45 ` Rik van Riel
2012-06-21 17:45 ` Rik van Riel
2012-06-21 12:37 ` Borislav Petkov
2012-06-21 12:37 ` Borislav Petkov
2012-06-21 13:24 ` Rik van Riel
2012-06-21 13:24 ` Rik van Riel
2012-06-18 22:05 ` [PATCH -mm 5/7] mm: remove x86 arch_get_unmapped_area(_topdown) Rik van Riel
2012-06-18 22:05 ` Rik van Riel
2012-06-18 22:05 ` [PATCH -mm 6/7] remove MIPS arch_get_unmapped_area code Rik van Riel
2012-06-18 22:05 ` Rik van Riel
2012-06-18 22:05 ` [PATCH -mm 7/7] remove ARM arch_get_unmapped_area functions Rik van Riel
2012-06-18 22:05 ` Rik van Riel
2012-06-19 23:20 ` [PATCH -mm 0/7] mm: scalable and unified arch_get_unmapped_area Andrew Morton
2012-06-19 23:20 ` Andrew Morton
2012-06-21 10:18 ` Johannes Weiner
2012-06-21 10:18 ` Johannes Weiner
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=1340276867.21745.172.camel@twins \
--to=peterz@infradead.org \
--cc=aarcange@redhat.com \
--cc=akpm@linux-foundation.org \
--cc=andi@firstfloor.org \
--cc=hannes@cmpxchg.org \
--cc=kosaki.motohiro@gmail.com \
--cc=linux-kernel@vger.kernel.org \
--cc=linux-mm@kvack.org \
--cc=mel@csn.ul.ie \
--cc=minchan@gmail.com \
--cc=riel@redhat.com \
--cc=riel@surriel.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.