From: Adam Litke <agl@us.ibm.com>
To: Ken Chen <kenchen@google.com>
Cc: Dave Hansen <haveblue@us.ibm.com>,
Andrew Morton <akpm@linux-foundation.org>,
linux-mm@kvack.org, Andy Whitcroft <apw@shadowen.org>
Subject: Re: [PATCH 1/3] [FIX] hugetlb: Fix broken fs quota management
Date: Thu, 25 Oct 2007 09:54:58 -0500 [thread overview]
Message-ID: <1193324098.18417.80.camel@localhost.localdomain> (raw)
In-Reply-To: <b040c32a0710242220w615be4f0kd34f86a9d9b048c5@mail.gmail.com>
On Wed, 2007-10-24 at 22:20 -0700, Ken Chen wrote:
> On 10/24/07, Dave Hansen <haveblue@us.ibm.com> wrote:
> > But, I think what I'm realizing is that the free paths for shared vs.
> > private are actually quite distinct. Even more now after your patches
> > abolish using and actual put_page() (and the destructors) on private
> > pages losing their last mapping.
> >
> > I think it may make a lot of sense to have
> > {alloc,free}_{private,shared}_huge_page(). It'll really help
> > readability, and I _think_ it gives you a handy dandy place to add the
> > different quota operations needed.
>
> Here is my version of re-factoring hugetlb_put_quota() into
> free_huge_page. Not exactly what Dave suggested, but at least
> consolidate quota credit in one place.
I think consolidating quota into alloc/free_huge_page is a laudable
goal, but it has some problems (see below) that I feel go beyond simply
fixing the broken accounting (the initial purpose of the patches I was
targeting for -rc2).
<snip>
> @@ -369,6 +375,7 @@ static struct page *alloc_huge_page(
>
> spin_unlock(&hugetlb_lock);
> set_page_refcounted(page);
> + set_page_private(page, (unsigned long) vma->vm_file->f_mapping);
> return page;
>
> fail:
This seems like a layering violation to me. We set page->private here,
but if add_to_page_cache() is called on this page later, it will set
page->mapping. Granted it will overwrite the exact same value, but it
does so using a different field in the union. So I don't think we
should be messing with page->private in this way.
--
Adam Litke - (agl at us.ibm.com)
IBM Linux Technology Center
--
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>
next prev parent reply other threads:[~2007-10-25 14:55 UTC|newest]
Thread overview: 15+ messages / expand[flat|nested] mbox.gz Atom feed top
2007-10-24 13:23 [PATCH 0/3] hugetlb: Fix up filesystem quota accounting Adam Litke
2007-10-24 13:23 ` [PATCH 1/3] [FIX] hugetlb: Fix broken fs quota management Adam Litke
2007-10-24 18:43 ` Dave Hansen
2007-10-24 19:03 ` Adam Litke
2007-10-24 19:18 ` Dave Hansen
2007-10-24 19:21 ` Ken Chen
2007-10-24 20:02 ` Adam Litke
2007-10-24 22:12 ` Dave Hansen
2007-10-25 5:20 ` Ken Chen
2007-10-25 14:54 ` Adam Litke [this message]
2007-10-24 13:23 ` [PATCH 2/3] hugetlb: Allow bulk updating in hugetlb_*_quota() Adam Litke
2007-10-24 13:24 ` [PATCH 3/3] [PATCH] hugetlb: Enforce quotas during reservation for shared mappings Adam Litke
2007-10-24 19:07 ` Dave Hansen
2007-10-24 19:52 ` Adam Litke
2007-10-24 20:00 ` Dave Hansen
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=1193324098.18417.80.camel@localhost.localdomain \
--to=agl@us.ibm.com \
--cc=akpm@linux-foundation.org \
--cc=apw@shadowen.org \
--cc=haveblue@us.ibm.com \
--cc=kenchen@google.com \
--cc=linux-mm@kvack.org \
/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.