erofs: use read_mapping_page instead of sb_bread
As Christoph said [1], "This seems to be your only direct use of buffer heads, which while not deprecated are a bit of an ugly step child. So if you can easily avoid creating a buffer_head dependency in a new filesystem I think you should avoid it. " [1] https://lore.kernel.org/r/20190902125109.GA9826@infradead.org/ Reported-by: Christoph Hellwig <hch@infradead.org> Signed-off-by: Gao Xiang <gaoxiang25@huawei.com> Link: https://lore.kernel.org/r/20190904020912.63925-24-gaoxiang25@huawei.com Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
This commit is contained in:
parent
4f761fa253
commit
fe7c242357
@ -98,20 +98,22 @@ static bool check_layout_compatibility(struct super_block *sb,
|
|||||||
static int erofs_read_superblock(struct super_block *sb)
|
static int erofs_read_superblock(struct super_block *sb)
|
||||||
{
|
{
|
||||||
struct erofs_sb_info *sbi;
|
struct erofs_sb_info *sbi;
|
||||||
struct buffer_head *bh;
|
struct page *page;
|
||||||
struct erofs_super_block *dsb;
|
struct erofs_super_block *dsb;
|
||||||
unsigned int blkszbits;
|
unsigned int blkszbits;
|
||||||
|
void *data;
|
||||||
int ret;
|
int ret;
|
||||||
|
|
||||||
bh = sb_bread(sb, 0);
|
page = read_mapping_page(sb->s_bdev->bd_inode->i_mapping, 0, NULL);
|
||||||
|
if (!page) {
|
||||||
if (!bh) {
|
|
||||||
erofs_err(sb, "cannot read erofs superblock");
|
erofs_err(sb, "cannot read erofs superblock");
|
||||||
return -EIO;
|
return -EIO;
|
||||||
}
|
}
|
||||||
|
|
||||||
sbi = EROFS_SB(sb);
|
sbi = EROFS_SB(sb);
|
||||||
dsb = (struct erofs_super_block *)(bh->b_data + EROFS_SUPER_OFFSET);
|
|
||||||
|
data = kmap_atomic(page);
|
||||||
|
dsb = (struct erofs_super_block *)(data + EROFS_SUPER_OFFSET);
|
||||||
|
|
||||||
ret = -EINVAL;
|
ret = -EINVAL;
|
||||||
if (le32_to_cpu(dsb->magic) != EROFS_SUPER_MAGIC_V1) {
|
if (le32_to_cpu(dsb->magic) != EROFS_SUPER_MAGIC_V1) {
|
||||||
@ -153,7 +155,8 @@ static int erofs_read_superblock(struct super_block *sb)
|
|||||||
}
|
}
|
||||||
ret = 0;
|
ret = 0;
|
||||||
out:
|
out:
|
||||||
brelse(bh);
|
kunmap_atomic(data);
|
||||||
|
put_page(page);
|
||||||
return ret;
|
return ret;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user