Message ID | 1316526315-16801-4-git-send-email-jweiner@redhat.com |
---|---|
State | Not Applicable, archived |
Headers | show |
In addition to regular write shouldn't __do_fault and do_wp_page also calls this if they are called on file backed mappings? -- To unsubscribe from this list: send the line "unsubscribe linux-ext4" in the body of a message to majordomo@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html
On 09/20/2011 10:25 AM, Christoph Hellwig wrote: > In addition to regular write shouldn't __do_fault and do_wp_page also > calls this if they are called on file backed mappings? > Probably not do_wp_page since it always creates an anonymous page, which are not very relevant to the dirty page cache accounting. -- To unsubscribe from this list: send the line "unsubscribe linux-ext4" in the body of a message to majordomo@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html
On Tue, Sep 20, 2011 at 02:38:03PM -0400, Rik van Riel wrote: > On 09/20/2011 10:25 AM, Christoph Hellwig wrote: > >In addition to regular write shouldn't __do_fault and do_wp_page also > >calls this if they are called on file backed mappings? > > > > Probably not do_wp_page since it always creates an > anonymous page, which are not very relevant to the > dirty page cache accounting. Well, it doesn't always - but for the case where it doesn't we do not allocate a new page at all so you're right in the end :) -- To unsubscribe from this list: send the line "unsubscribe linux-ext4" in the body of a message to majordomo@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html
On 09/20/2011 09:45 AM, Johannes Weiner wrote: > Tell the page allocator that pages allocated through > grab_cache_page_write_begin() are expected to become dirty soon. > > Signed-off-by: Johannes Weiner<jweiner@redhat.com> Reviewed-by: Rik van Riel<riel@redhat.com> The missing codepaths pointed out by Christoph either create new anonymous pages, or mark ptes pointing at existing page cache pages writeable. Either way, those should not need __GFP_WRITE. -- To unsubscribe from this list: send the line "unsubscribe linux-ext4" in the body of a message to majordomo@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html
On Tue, Sep 20, 2011 at 02:40:34PM -0400, Christoph Hellwig wrote: > On Tue, Sep 20, 2011 at 02:38:03PM -0400, Rik van Riel wrote: > > On 09/20/2011 10:25 AM, Christoph Hellwig wrote: > > >In addition to regular write shouldn't __do_fault and do_wp_page also > > >calls this if they are called on file backed mappings? > > > > Probably not do_wp_page since it always creates an > > anonymous page, which are not very relevant to the > > dirty page cache accounting. > > Well, it doesn't always - but for the case where it doesn't we > do not allocate a new page at all so you're right in the end :) I think it could be useful to annotate write-fault allocations in filemap_fault(), but these pages are mostly allocated in the readahead code, so this could turn into a more invasive project. It can be done incrementally, however, the series as it stands does not require it to be useful. -- To unsubscribe from this list: send the line "unsubscribe linux-ext4" in the body of a message to majordomo@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html
On Tue, Sep 20, 2011 at 03:45:14PM +0200, Johannes Weiner wrote: > Tell the page allocator that pages allocated through > grab_cache_page_write_begin() are expected to become dirty soon. > > Signed-off-by: Johannes Weiner <jweiner@redhat.com> Acked-by: Mel Gorman <mgorman@suse.de>
On Tue, Sep 20, 2011 at 03:45:14PM +0200, Johannes Weiner wrote: > Tell the page allocator that pages allocated through > grab_cache_page_write_begin() are expected to become dirty soon. > > Signed-off-by: Johannes Weiner <jweiner@redhat.com> Reviewed-by: Minchan Kim <minchan.kim@gmail.com>
diff --git a/mm/filemap.c b/mm/filemap.c index 645a080..cf0352d 100644 --- a/mm/filemap.c +++ b/mm/filemap.c @@ -2349,8 +2349,11 @@ struct page *grab_cache_page_write_begin(struct address_space *mapping, pgoff_t index, unsigned flags) { int status; + gfp_t gfp_mask; struct page *page; gfp_t gfp_notmask = 0; + + gfp_mask = mapping_gfp_mask(mapping) | __GFP_WRITE; if (flags & AOP_FLAG_NOFS) gfp_notmask = __GFP_FS; repeat: @@ -2358,7 +2361,7 @@ repeat: if (page) goto found; - page = __page_cache_alloc(mapping_gfp_mask(mapping) & ~gfp_notmask); + page = __page_cache_alloc(gfp_mask & ~gfp_notmask); if (!page) return NULL; status = add_to_page_cache_lru(page, mapping, index,
Tell the page allocator that pages allocated through grab_cache_page_write_begin() are expected to become dirty soon. Signed-off-by: Johannes Weiner <jweiner@redhat.com> --- mm/filemap.c | 5 ++++- 1 files changed, 4 insertions(+), 1 deletions(-)