[PATCH 1/2] erofs: clean up z_erofs_extent_lookback

Gao Xiang hsiangkao at linux.alibaba.com
Fri Mar 11 18:28:28 AEDT 2022


On Fri, Mar 11, 2022 at 03:12:32PM +0800, Yue Hu wrote:
> On Fri, 11 Mar 2022 02:27:42 +0800
> Gao Xiang <hsiangkao at linux.alibaba.com> wrote:
> 
> > Avoid the unnecessary tail recursion since it can be converted into
> > a loop directly in order to prevent potential stack overflow.
> > 
> > It's a pretty straightforward conversion.
> > 
> > Signed-off-by: Gao Xiang <hsiangkao at linux.alibaba.com>
> > ---
> >  fs/erofs/zmap.c | 67 ++++++++++++++++++++++++-------------------------
> >  1 file changed, 33 insertions(+), 34 deletions(-)
> > 
> > diff --git a/fs/erofs/zmap.c b/fs/erofs/zmap.c
> > index b4059b9c3bac..572f0b8151ba 100644
> > --- a/fs/erofs/zmap.c
> > +++ b/fs/erofs/zmap.c
> > @@ -431,48 +431,47 @@ static int z_erofs_extent_lookback(struct z_erofs_maprecorder *m,
> >  				   unsigned int lookback_distance)
> >  {
> >  	struct erofs_inode *const vi = EROFS_I(m->inode);
> > -	struct erofs_map_blocks *const map = m->map;
> >  	const unsigned int lclusterbits = vi->z_logical_clusterbits;
> > -	unsigned long lcn = m->lcn;
> > -	int err;
> >  
> > -	if (lcn < lookback_distance) {
> > -		erofs_err(m->inode->i_sb,
> > -			  "bogus lookback distance @ nid %llu", vi->nid);
> > -		DBG_BUGON(1);
> > -		return -EFSCORRUPTED;
> > -	}
> > +	while (m->lcn >= lookback_distance) {
> > +		unsigned long lcn = m->lcn - lookback_distance;
> > +		int err;
> 
> may better to declare variable 'lclusterbits' in loop just like 'err' usage?

I'm fine with either way. Ok, will post the next version later.

Thanks,
Gao Xiang


More information about the Linux-erofs mailing list