[<prev] [next>] [<thread-prev] [thread-next>] [day] [month] [year] [list]
Message-ID: <20090115223117.GA30560@kroah.com>
Date: Thu, 15 Jan 2009 14:31:17 -0800
From: Greg KH <greg@...ah.com>
To: Nick Piggin <npiggin@...e.de>
Cc: linux-kernel@...r.kernel.org, stable@...nel.org,
Justin Forbes <jmforbes@...uxtx.org>,
Zwane Mwaikambo <zwane@....linux.org.uk>,
Theodore Ts'o <tytso@....edu>,
Randy Dunlap <rdunlap@...otime.net>,
Dave Jones <davej@...hat.com>,
Chuck Wolber <chuckw@...ntumlinux.com>,
Chris Wedgwood <reviews@...cw.f00f.org>,
Michael Krufky <mkrufky@...uxtv.org>,
Chuck Ebbert <cebbert@...hat.com>,
Domenico Andreoli <cavokz@...il.com>, Willy Tarreau <w@....eu>,
Rodrigo Rubira Branco <rbranco@...checkpoint.com>,
Jake Edge <jake@....net>, Eugene Teo <eteo@...hat.com>,
torvalds@...ux-foundation.org, akpm@...ux-foundation.org,
alan@...rguk.ukuu.org.uk, Nick Piggin <npiggin@...e.de>,
KOSAKI Motohiro <kosaki.motohiro@...fujitsu.com>
Subject: Re: [patch 68/85] fs: symlink write_begin allocation context fix
On Thu, Jan 15, 2009 at 02:01:36PM -0800, Greg KH wrote:
> 2.6.27-stable review patch. If anyone has any objections, please let us know.
Hm, I think I got the backport of this patch wrong in two place:
> --- a/mm/filemap.c
> +++ b/mm/filemap.c
> @@ -2033,7 +2033,7 @@ int pagecache_write_begin(struct file *f
> struct inode *inode = mapping->host;
> struct page *page;
> again:
> - page = __grab_cache_page(mapping, index);
> + page = grab_cache_page_write_begin(mapping, index, flags);
I think this shouldn't be "flags", but 0, right?
> *pagep = page;
> if (!page)
> return -ENOMEM;
> @@ -2197,19 +2197,24 @@ EXPORT_SYMBOL(generic_file_direct_write)
> * Find or create a page at the given pagecache position. Return the locked
> * page. This function is specifically for buffered writes.
> */
> -struct page *__grab_cache_page(struct address_space *mapping, pgoff_t index)
> +struct page *grab_cache_page_write_begin(struct address_space *mapping,
> + pgoff_t index, unsigned flags)
> {
> int status;
> struct page *page;
> + gfp_t gfp_notmask = 0;
> + if (flags & AOP_FLAG_NOFS)
> + gfp_notmask = __GFP_FS;
> repeat:
> page = find_lock_page(mapping, index);
> if (likely(page))
> return page;
>
> - page = page_cache_alloc(mapping);
> + page = __page_cache_alloc(mapping_gfp_mask(mapping) & ~gfp_notmask);
> if (!page)
> return NULL;
> - status = add_to_page_cache_lru(page, mapping, index, GFP_KERNEL);
> + status = add_to_page_cache_lru(page, mapping, index,
> + GFP_KERNEL & ~gfp_notmask);
> if (unlikely(status)) {
> page_cache_release(page);
> if (status == -EEXIST)
> @@ -2218,7 +2223,7 @@ repeat:
> }
> return page;
> }
> -EXPORT_SYMBOL(__grab_cache_page);
> +EXPORT_SYMBOL(grab_cache_page_write_begin);
>
> static ssize_t generic_perform_write_2copy(struct file *file,
> struct iov_iter *i, loff_t pos)
> @@ -2263,7 +2268,7 @@ static ssize_t generic_perform_write_2co
> break;
> }
>
> - page = __grab_cache_page(mapping, index);
> + page = grab_cache_page_write_begin(mapping, index, GFP_KERNEL);
And this one? Is GFP_KERNEL ok, or 0?
Nick, your thoughts?
greg "i'm no mm hacker" k-h
--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@...r.kernel.org
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/
Powered by blists - more mailing lists