Commit fe7c2423 authored by Gao Xiang's avatar Gao Xiang Committed by Greg Kroah-Hartman

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: default avatarChristoph Hellwig <hch@infradead.org>
Signed-off-by: default avatarGao Xiang <gaoxiang25@huawei.com>
Link: https://lore.kernel.org/r/20190904020912.63925-24-gaoxiang25@huawei.comSigned-off-by: default avatarGreg Kroah-Hartman <gregkh@linuxfoundation.org>
parent 4f761fa2
...@@ -98,20 +98,22 @@ static bool check_layout_compatibility(struct super_block *sb, ...@@ -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) ...@@ -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;
} }
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment