erofs: clean up z_erofs_collector_begin()
Rearrange the code and get rid of all gotos. Reviewed-by: Yue Hu <huyue2@coolpad.com> Acked-by: Chao Yu <chao@kernel.org> Signed-off-by: Gao Xiang <hsiangkao@linux.alibaba.com> Link: https://lore.kernel.org/r/20220715154203.48093-3-hsiangkao@linux.alibaba.com
This commit is contained in:
Родитель
83a386c0a5
Коммит
0d823b424f
|
@ -521,7 +521,7 @@ err_out:
|
|||
static int z_erofs_collector_begin(struct z_erofs_decompress_frontend *fe)
|
||||
{
|
||||
struct erofs_map_blocks *map = &fe->map;
|
||||
struct erofs_workgroup *grp;
|
||||
struct erofs_workgroup *grp = NULL;
|
||||
int ret;
|
||||
|
||||
DBG_BUGON(fe->pcl);
|
||||
|
@ -530,33 +530,31 @@ static int z_erofs_collector_begin(struct z_erofs_decompress_frontend *fe)
|
|||
DBG_BUGON(fe->owned_head == Z_EROFS_PCLUSTER_NIL);
|
||||
DBG_BUGON(fe->owned_head == Z_EROFS_PCLUSTER_TAIL_CLOSED);
|
||||
|
||||
if (map->m_flags & EROFS_MAP_META) {
|
||||
if ((map->m_pa & ~PAGE_MASK) + map->m_plen > PAGE_SIZE) {
|
||||
DBG_BUGON(1);
|
||||
return -EFSCORRUPTED;
|
||||
}
|
||||
goto tailpacking;
|
||||
if (!(map->m_flags & EROFS_MAP_META)) {
|
||||
grp = erofs_find_workgroup(fe->inode->i_sb,
|
||||
map->m_pa >> PAGE_SHIFT);
|
||||
} else if ((map->m_pa & ~PAGE_MASK) + map->m_plen > PAGE_SIZE) {
|
||||
DBG_BUGON(1);
|
||||
return -EFSCORRUPTED;
|
||||
}
|
||||
|
||||
grp = erofs_find_workgroup(fe->inode->i_sb, map->m_pa >> PAGE_SHIFT);
|
||||
if (grp) {
|
||||
fe->pcl = container_of(grp, struct z_erofs_pcluster, obj);
|
||||
ret = -EEXIST;
|
||||
} else {
|
||||
tailpacking:
|
||||
ret = z_erofs_register_pcluster(fe);
|
||||
if (!ret)
|
||||
goto out;
|
||||
if (ret != -EEXIST)
|
||||
return ret;
|
||||
}
|
||||
|
||||
ret = z_erofs_lookup_pcluster(fe);
|
||||
if (ret) {
|
||||
erofs_workgroup_put(&fe->pcl->obj);
|
||||
if (ret == -EEXIST) {
|
||||
ret = z_erofs_lookup_pcluster(fe);
|
||||
if (ret) {
|
||||
erofs_workgroup_put(&fe->pcl->obj);
|
||||
return ret;
|
||||
}
|
||||
} else if (ret) {
|
||||
return ret;
|
||||
}
|
||||
|
||||
out:
|
||||
z_erofs_pagevec_ctor_init(&fe->vector, Z_EROFS_NR_INLINE_PAGEVECS,
|
||||
fe->pcl->pagevec, fe->pcl->vcnt);
|
||||
/* since file-backed online pages are traversed in reverse order */
|
||||
|
|
Загрузка…
Ссылка в новой задаче