Messages in this thread Patch in this message | | | Date | Tue, 29 Apr 2008 11:49:24 -0700 | From | Greg KH <> | Subject | [01/12] splice: use mapping_gfp_mask |
| |
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 <hugh@veritas.com> Cc: Jens Axboe <jens.axboe@oracle.com> Cc: Andrew Morton <akpm@linux-foundation.org> Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org> Signed-off-by: Chris Wright <chrisw@sous-sol.org> --- 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) --
| |