diff options
author | Jens Axboe <axboe@kernel.dk> | 2017-09-27 13:45:36 +0200 |
---|---|---|
committer | Jens Axboe <axboe@kernel.dk> | 2017-10-03 16:38:17 +0200 |
commit | 94dc24c0c59a224a093f110060d01c2c620f275a (patch) | |
tree | 13d901e901caf86342e4e47dabfeb5b5a4f5f7dc | |
parent | buffer: have alloc_page_buffers() use __GFP_NOFAIL (diff) | |
download | linux-94dc24c0c59a224a093f110060d01c2c620f275a.tar.xz linux-94dc24c0c59a224a093f110060d01c2c620f275a.zip |
buffer: grow_dev_page() should use __GFP_NOFAIL for all cases
We currently use it for find_or_create_page(), which means that it
cannot fail. Ensure we also pass in 'retry == true' to
alloc_page_buffers(), which also ensure that it cannot fail.
After this, there are no failure cases in grow_dev_page() that
occur because of a failed memory allocation.
Reviewed-by: Nikolay Borisov <nborisov@suse.com>
Reviewed-by: Jan Kara <jack@suse.cz>
Signed-off-by: Jens Axboe <axboe@kernel.dk>
-rw-r--r-- | fs/buffer.c | 6 |
1 files changed, 1 insertions, 5 deletions
diff --git a/fs/buffer.c b/fs/buffer.c index 1234ae343aef..3b60cd8456db 100644 --- a/fs/buffer.c +++ b/fs/buffer.c @@ -988,8 +988,6 @@ grow_dev_page(struct block_device *bdev, sector_t block, gfp_mask |= __GFP_NOFAIL; page = find_or_create_page(inode->i_mapping, index, gfp_mask); - if (!page) - return ret; BUG_ON(!PageLocked(page)); @@ -1008,9 +1006,7 @@ grow_dev_page(struct block_device *bdev, sector_t block, /* * Allocate some buffers for this page */ - bh = alloc_page_buffers(page, size, false); - if (!bh) - goto failed; + bh = alloc_page_buffers(page, size, true); /* * Link the page to the buffers and initialise them. Take the |