mirror of
https://git.kernel.org/pub/scm/linux/kernel/git/next/linux-next.git
synced 2025-01-10 15:58:47 +00:00
erofs: fix erofs_get_meta_page locking due to a cleanup
After doing more drop_caches stress test on our products, I found the mistake introduced by a very recent cleanup [1]. The current rule is that "erofs_get_meta_page" should be returned with page locked (although it's mostly unnecessary for read-only fs after pages are PG_uptodate), but a fix should be done for this. [1] https://lore.kernel.org/r/20190904020912.63925-26-gaoxiang25@huawei.com Fixes: 618f40ea026b ("erofs: use read_cache_page_gfp for erofs_get_meta_page") Reviewed-by: Chao Yu <yuchao0@huawei.com> Link: https://lore.kernel.org/r/20190921184355.149928-1-gaoxiang25@huawei.com Signed-off-by: Gao Xiang <gaoxiang25@huawei.com>
This commit is contained in:
parent
6927cc05c2
commit
55252ab72b
@ -34,11 +34,15 @@ static void erofs_readendio(struct bio *bio)
|
||||
|
||||
struct page *erofs_get_meta_page(struct super_block *sb, erofs_blk_t blkaddr)
|
||||
{
|
||||
struct inode *const bd_inode = sb->s_bdev->bd_inode;
|
||||
struct address_space *const mapping = bd_inode->i_mapping;
|
||||
struct address_space *const mapping = sb->s_bdev->bd_inode->i_mapping;
|
||||
struct page *page;
|
||||
|
||||
return read_cache_page_gfp(mapping, blkaddr,
|
||||
page = read_cache_page_gfp(mapping, blkaddr,
|
||||
mapping_gfp_constraint(mapping, ~__GFP_FS));
|
||||
/* should already be PageUptodate */
|
||||
if (!IS_ERR(page))
|
||||
lock_page(page);
|
||||
return page;
|
||||
}
|
||||
|
||||
static int erofs_map_blocks_flatmode(struct inode *inode,
|
||||
|
Loading…
x
Reference in New Issue
Block a user