projects/linux·commit 4cd13504

splice: use mapping_gfp_mask

4cd13504 · Hugh Dickins <[email protected]> · 2008-04-03 23:35:22 +01:00

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 <[email protected]>
Cc: Jens Axboe <[email protected]>
Cc: Andrew Morton <[email protected]>
Signed-off-by: Linus Torvalds <[email protected]>
Commit
4cd13504652d28e16bf186c6bb2bbb3725369383
Parents
9597362d

Changes

1 files changed · +1 −1

FileStatusAddDelContent
fs/splice.cmodified+1−1View file

fs/splice.c

View file
diff --git a/fs/splice.c b/fs/splice.c
index 0670c91..a861bb3 100644
--- a/fs/splice.c
+++ b/fs/splice.c
@@ -320,7 +320,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)