erofs: use meta buffers for erofs_read_superblock()
The only change is that, meta buffers read cache page without __GFP_FS flag, which shall not matter. Link: https://lore.kernel.org/r/20220209060108.43051-7-jefflexu@linux.alibaba.com Signed-off-by: Jeffle Xu <jefflexu@linux.alibaba.com> Reviewed-by: Gao Xiang <hsiangkao@linux.alibaba.com> Reviewed-by: Chao Yu <chao@kernel.org> Signed-off-by: Gao Xiang <hsiangkao@linux.alibaba.com>
This commit is contained in:
parent
ffb217a13a
commit
ed6e0401e6
@ -281,21 +281,19 @@ static int erofs_init_devices(struct super_block *sb,
|
||||
static int erofs_read_superblock(struct super_block *sb)
|
||||
{
|
||||
struct erofs_sb_info *sbi;
|
||||
struct page *page;
|
||||
struct erofs_buf buf = __EROFS_BUF_INITIALIZER;
|
||||
struct erofs_super_block *dsb;
|
||||
unsigned int blkszbits;
|
||||
void *data;
|
||||
int ret;
|
||||
|
||||
page = read_mapping_page(sb->s_bdev->bd_inode->i_mapping, 0, NULL);
|
||||
if (IS_ERR(page)) {
|
||||
data = erofs_read_metabuf(&buf, sb, 0, EROFS_KMAP);
|
||||
if (IS_ERR(data)) {
|
||||
erofs_err(sb, "cannot read erofs superblock");
|
||||
return PTR_ERR(page);
|
||||
return PTR_ERR(data);
|
||||
}
|
||||
|
||||
sbi = EROFS_SB(sb);
|
||||
|
||||
data = kmap(page);
|
||||
dsb = (struct erofs_super_block *)(data + EROFS_SUPER_OFFSET);
|
||||
|
||||
ret = -EINVAL;
|
||||
@ -365,8 +363,7 @@ static int erofs_read_superblock(struct super_block *sb)
|
||||
if (erofs_sb_has_ztailpacking(sbi))
|
||||
erofs_info(sb, "EXPERIMENTAL compressed inline data feature in use. Use at your own risk!");
|
||||
out:
|
||||
kunmap(page);
|
||||
put_page(page);
|
||||
erofs_put_metabuf(&buf);
|
||||
return ret;
|
||||
}
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user