diff options
author | Hugh Dickins <hugh@veritas.com> | 2008-04-03 23:35:22 +0100 |
---|---|---|
committer | Greg Kroah-Hartman <gregkh@suse.de> | 2008-05-01 14:48:58 -0700 |
commit | 1a825fd5424d59bdd791491a952ede2f99dae24c (patch) | |
tree | 8102ed27a4dbc8c3e36f7ababec9e19cb9a61370 | |
parent | 03282b1023560a81675ac7505b270c43f095e14b (diff) |
splice: use mapping_gfp_mask
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>
-rw-r--r-- | fs/splice.c | 2 |
1 files changed, 1 insertions, 1 deletions
diff --git a/fs/splice.c b/fs/splice.c index e3134783806f..109153c05d12 100644 --- a/fs/splice.c +++ b/fs/splice.c @@ -314,7 +314,7 @@ __generic_file_splice_read(struct file *in, loff_t *ppos, 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) |