mirror of https://github.com/torvalds/linux.git
erofs: get rid of check_layout_compatibility()
Simple enough to just open-code it. Signed-off-by: Hongzhen Luo <hongzhen@linux.alibaba.com> Reviewed-by: Sandeep Dhavale <dhavale@google.com> Reviewed-by: Gao Xiang <hsiangkao@linux.alibaba.com> Link: https://lore.kernel.org/r/20240806112208.150323-1-hongzhen@linux.alibaba.com Signed-off-by: Gao Xiang <hsiangkao@linux.alibaba.com>
This commit is contained in:
parent
5b5c96c63d
commit
2c534624ae
|
|
@ -108,22 +108,6 @@ static void erofs_free_inode(struct inode *inode)
|
||||||
kmem_cache_free(erofs_inode_cachep, vi);
|
kmem_cache_free(erofs_inode_cachep, vi);
|
||||||
}
|
}
|
||||||
|
|
||||||
static bool check_layout_compatibility(struct super_block *sb,
|
|
||||||
struct erofs_super_block *dsb)
|
|
||||||
{
|
|
||||||
const unsigned int feature = le32_to_cpu(dsb->feature_incompat);
|
|
||||||
|
|
||||||
EROFS_SB(sb)->feature_incompat = feature;
|
|
||||||
|
|
||||||
/* check if current kernel meets all mandatory requirements */
|
|
||||||
if (feature & (~EROFS_ALL_FEATURE_INCOMPAT)) {
|
|
||||||
erofs_err(sb, "unidentified incompatible feature %x, please upgrade kernel",
|
|
||||||
feature & ~EROFS_ALL_FEATURE_INCOMPAT);
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
return true;
|
|
||||||
}
|
|
||||||
|
|
||||||
/* read variable-sized metadata, offset will be aligned by 4-byte */
|
/* read variable-sized metadata, offset will be aligned by 4-byte */
|
||||||
void *erofs_read_metadata(struct super_block *sb, struct erofs_buf *buf,
|
void *erofs_read_metadata(struct super_block *sb, struct erofs_buf *buf,
|
||||||
erofs_off_t *offset, int *lengthp)
|
erofs_off_t *offset, int *lengthp)
|
||||||
|
|
@ -279,7 +263,7 @@ static int erofs_scan_devices(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 = EROFS_SB(sb);
|
||||||
struct erofs_buf buf = __EROFS_BUF_INITIALIZER;
|
struct erofs_buf buf = __EROFS_BUF_INITIALIZER;
|
||||||
struct erofs_super_block *dsb;
|
struct erofs_super_block *dsb;
|
||||||
void *data;
|
void *data;
|
||||||
|
|
@ -291,9 +275,7 @@ static int erofs_read_superblock(struct super_block *sb)
|
||||||
return PTR_ERR(data);
|
return PTR_ERR(data);
|
||||||
}
|
}
|
||||||
|
|
||||||
sbi = EROFS_SB(sb);
|
|
||||||
dsb = (struct erofs_super_block *)(data + EROFS_SUPER_OFFSET);
|
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) {
|
||||||
erofs_err(sb, "cannot find valid erofs superblock");
|
erofs_err(sb, "cannot find valid erofs superblock");
|
||||||
|
|
@ -318,8 +300,12 @@ static int erofs_read_superblock(struct super_block *sb)
|
||||||
}
|
}
|
||||||
|
|
||||||
ret = -EINVAL;
|
ret = -EINVAL;
|
||||||
if (!check_layout_compatibility(sb, dsb))
|
sbi->feature_incompat = le32_to_cpu(dsb->feature_incompat);
|
||||||
|
if (sbi->feature_incompat & ~EROFS_ALL_FEATURE_INCOMPAT) {
|
||||||
|
erofs_err(sb, "unidentified incompatible feature %x, please upgrade kernel",
|
||||||
|
sbi->feature_incompat & ~EROFS_ALL_FEATURE_INCOMPAT);
|
||||||
goto out;
|
goto out;
|
||||||
|
}
|
||||||
|
|
||||||
sbi->sb_size = 128 + dsb->sb_extslots * EROFS_SB_EXTSLOT_SIZE;
|
sbi->sb_size = 128 + dsb->sb_extslots * EROFS_SB_EXTSLOT_SIZE;
|
||||||
if (sbi->sb_size > PAGE_SIZE - EROFS_SUPER_OFFSET) {
|
if (sbi->sb_size > PAGE_SIZE - EROFS_SUPER_OFFSET) {
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue