From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1762237AbYD2SvN (ORCPT ); Tue, 29 Apr 2008 14:51:13 -0400 Received: (majordomo@vger.kernel.org) by vger.kernel.org id S1761681AbYD2Suj (ORCPT ); Tue, 29 Apr 2008 14:50:39 -0400 Received: from mx1.suse.de ([195.135.220.2]:51472 "EHLO mx1.suse.de" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1761647AbYD2Sui (ORCPT ); Tue, 29 Apr 2008 14:50:38 -0400 Date: Tue, 29 Apr 2008 11:49:24 -0700 From: Greg KH To: linux-kernel@vger.kernel.org, stable@kernel.org Cc: Justin Forbes , Zwane Mwaikambo , "Theodore Ts'o" , Randy Dunlap , Dave Jones , Chuck Wolber , Chris Wedgwood , Michael Krufky , Chuck Ebbert , Domenico Andreoli , torvalds@linux-foundation.org, akpm@linux-foundation.org, alan@lxorguk.ukuu.org.uk, Hugh Dickins , Jens Axboe , Chris Wright Subject: [01/12] splice: use mapping_gfp_mask Message-ID: <20080429184924.GB24199@suse.de> References: <20080429184543.308594866@mini.kroah.org> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline; filename="splice-use-mapping_gfp_mask.patch" In-Reply-To: <20080429184911.GA24199@suse.de> User-Agent: Mutt/1.5.16 (2007-06-09) Sender: linux-kernel-owner@vger.kernel.org List-ID: X-Mailing-List: linux-kernel@vger.kernel.org 2.6.24-stable review patch. If anyone has any objections, please let us know. ------------------ upstream commit: 4cd13504652d28e16bf186c6bb2bbb3725369383 The loop block driver is careful to mask __GFP_IO|__GFP_FS out of its mapping_gfp_mask, to avoid hangs under memory pressure. But nowadays it uses splice, usually going through __generic_file_splice_read. That must use mapping_gfp_mask instead of GFP_KERNEL to avoid those hangs. Signed-off-by: Hugh Dickins Cc: Jens Axboe Cc: Andrew Morton Signed-off-by: Linus Torvalds Signed-off-by: Chris Wright --- fs/splice.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) --- a/fs/splice.c +++ b/fs/splice.c @@ -314,7 +314,7 @@ __generic_file_splice_read(struct file * break; error = add_to_page_cache_lru(page, mapping, index, - GFP_KERNEL); + mapping_gfp_mask(mapping)); if (unlikely(error)) { page_cache_release(page); if (error == -EEXIST) --