On Thu, 14 Jul 2022 21:20:37 +0800 Gao Xiang <[email protected]> wrote:
> Rearrange the code and get rid of all gotos. > > Signed-off-by: Gao Xiang <[email protected]> > --- > fs/erofs/zdata.c | 32 +++++++++++++++----------------- > 1 file changed, 15 insertions(+), 17 deletions(-) > > diff --git a/fs/erofs/zdata.c b/fs/erofs/zdata.c > index 1b6816dd235f..c7be447ac64d 100644 > --- a/fs/erofs/zdata.c > +++ b/fs/erofs/zdata.c > @@ -521,7 +521,7 @@ static int z_erofs_register_pcluster(struct > z_erofs_decompress_frontend *fe) > 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 */ Reviewed-by: Yue Hu <[email protected]>
