* [PATCH resend] rmap: recompute pgoff for unmapping huge page
@ 2013-03-04 12:47 Hillf Danton
2013-03-06 22:20 ` Andrew Morton
2013-03-06 22:22 ` Andrew Morton
0 siblings, 2 replies; 3+ messages in thread
From: Hillf Danton @ 2013-03-04 12:47 UTC (permalink / raw)
To: Linux-MM; +Cc: LKML, Michal Hocko, Michel Lespinasse, Andrew Morton,
Hillf Danton
[Resend due to error in delivering to linux-kernel@vger.kernel.org,
caused probably by the rich format provided by the mail agent by default.]
We have to recompute pgoff if the given page is huge, since result based on
HPAGE_SIZE is not approapriate for scanning the vma interval tree, as shown
by commit 36e4f20af833(hugetlb: do not use vma_hugecache_offset() for
vma_prio_tree_foreach)
Signed-off-by: Hillf Danton <dhillf@gmail.com>
---
--- a/mm/rmap.c Mon Mar 4 20:00:00 2013
+++ b/mm/rmap.c Mon Mar 4 20:02:16 2013
@@ -1513,6 +1513,9 @@ static int try_to_unmap_file(struct page
unsigned long max_nl_size = 0;
unsigned int mapcount;
+ if (PageHuge(page))
+ pgoff = page->index << compound_order(page);
+
mutex_lock(&mapping->i_mmap_mutex);
vma_interval_tree_foreach(vma, &mapping->i_mmap, pgoff, pgoff) {
unsigned long address = vma_address(page, vma);
--
--
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>
^ permalink raw reply [flat|nested] 3+ messages in thread
* Re: [PATCH resend] rmap: recompute pgoff for unmapping huge page
2013-03-04 12:47 [PATCH resend] rmap: recompute pgoff for unmapping huge page Hillf Danton
@ 2013-03-06 22:20 ` Andrew Morton
2013-03-06 22:22 ` Andrew Morton
1 sibling, 0 replies; 3+ messages in thread
From: Andrew Morton @ 2013-03-06 22:20 UTC (permalink / raw)
To: Hillf Danton; +Cc: Linux-MM, LKML, Michal Hocko, Michel Lespinasse
On Mon, 4 Mar 2013 20:47:31 +0800 Hillf Danton <dhillf@gmail.com> wrote:
> [Resend due to error in delivering to linux-kernel@vger.kernel.org,
> caused probably by the rich format provided by the mail agent by default.]
>
> We have to recompute pgoff if the given page is huge, since result based on
> HPAGE_SIZE is not approapriate for scanning the vma interval tree, as shown
> by commit 36e4f20af833(hugetlb: do not use vma_hugecache_offset() for
> vma_prio_tree_foreach)
>
> Signed-off-by: Hillf Danton <dhillf@gmail.com>
> ---
>
> --- a/mm/rmap.c Mon Mar 4 20:00:00 2013
> +++ b/mm/rmap.c Mon Mar 4 20:02:16 2013
> @@ -1513,6 +1513,9 @@ static int try_to_unmap_file(struct page
> unsigned long max_nl_size = 0;
> unsigned int mapcount;
>
> + if (PageHuge(page))
> + pgoff = page->index << compound_order(page);
> +
> mutex_lock(&mapping->i_mmap_mutex);
> vma_interval_tree_foreach(vma, &mapping->i_mmap, pgoff, pgoff) {
> unsigned long address = vma_address(page, vma);
How are we getting here for hugepages? Trying to migrate a hugetlbfs
page?
Can we just do this?
--- a/mm/rmap.c~a
+++ a/mm/rmap.c
@@ -1505,7 +1505,7 @@ static int try_to_unmap_anon(struct page
static int try_to_unmap_file(struct page *page, enum ttu_flags flags)
{
struct address_space *mapping = page->mapping;
- pgoff_t pgoff = page->index << (PAGE_CACHE_SHIFT - PAGE_SHIFT);
+ pgoff_t pgoff;
struct vm_area_struct *vma;
int ret = SWAP_AGAIN;
unsigned long cursor;
@@ -1513,6 +1513,7 @@ static int try_to_unmap_file(struct page
unsigned long max_nl_size = 0;
unsigned int mapcount;
+ pgoff = page->index << compound_order(page);
mutex_lock(&mapping->i_mmap_mutex);
vma_interval_tree_foreach(vma, &mapping->i_mmap, pgoff, pgoff) {
unsigned long address = vma_address(page, vma);
_
It's a lot less fuss.
--
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>
^ permalink raw reply [flat|nested] 3+ messages in thread
* Re: [PATCH resend] rmap: recompute pgoff for unmapping huge page
2013-03-04 12:47 [PATCH resend] rmap: recompute pgoff for unmapping huge page Hillf Danton
2013-03-06 22:20 ` Andrew Morton
@ 2013-03-06 22:22 ` Andrew Morton
1 sibling, 0 replies; 3+ messages in thread
From: Andrew Morton @ 2013-03-06 22:22 UTC (permalink / raw)
To: Hillf Danton; +Cc: Linux-MM, LKML, Michal Hocko, Michel Lespinasse
On Mon, 4 Mar 2013 20:47:31 +0800 Hillf Danton <dhillf@gmail.com> wrote:
> [Resend due to error in delivering to linux-kernel@vger.kernel.org,
> caused probably by the rich format provided by the mail agent by default.]
>
> We have to recompute pgoff if the given page is huge, since result based on
> HPAGE_SIZE is not approapriate for scanning the vma interval tree, as shown
> by commit 36e4f20af833(hugetlb: do not use vma_hugecache_offset() for
> vma_prio_tree_foreach)
>
> ...
>
> @@ -1513,6 +1513,9 @@ static int try_to_unmap_file(struct page
> unsigned long max_nl_size = 0;
> unsigned int mapcount;
>
> + if (PageHuge(page))
> + pgoff = page->index << compound_order(page);
> +
> mutex_lock(&mapping->i_mmap_mutex);
> vma_interval_tree_foreach(vma, &mapping->i_mmap, pgoff, pgoff) {
> unsigned long address = vma_address(page, vma);
Also, what does this patch actually do?
I have a canned response nowadays:
When writing a changelog, please describe the end-user-visible effects
of that bug, so that others can more easily decide which kernel
version(s) should be fixed, and so that downstream kernel maintainers
can more easily work out whether this patch will fix a problem which
they or their customers are observing.
--
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>
^ permalink raw reply [flat|nested] 3+ messages in thread
end of thread, other threads:[~2013-03-06 22:22 UTC | newest]
Thread overview: 3+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2013-03-04 12:47 [PATCH resend] rmap: recompute pgoff for unmapping huge page Hillf Danton
2013-03-06 22:20 ` Andrew Morton
2013-03-06 22:22 ` Andrew Morton
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).