From: Yue Hu <[email protected]> The icur field is only used in z_erofs_try_inplace_io(). Let's just use a local variable instead. And no need to check if the pcluster is inline when setting icur since inline page cannot be used for inplace I/O.
Signed-off-by: Yue Hu <[email protected]> --- fs/erofs/zdata.c | 13 +++++-------- 1 file changed, 5 insertions(+), 8 deletions(-) diff --git a/fs/erofs/zdata.c b/fs/erofs/zdata.c index f759152feffa..f8bf2b227942 100644 --- a/fs/erofs/zdata.c +++ b/fs/erofs/zdata.c @@ -554,9 +554,6 @@ struct z_erofs_decompress_frontend { /* used for applying cache strategy on the fly */ bool backmost; erofs_off_t headoffset; - - /* a pointer used to pick up inplace I/O pages */ - unsigned int icur; }; #define DECOMPRESS_FRONTEND_INIT(__i) { \ @@ -707,11 +704,13 @@ static bool z_erofs_try_inplace_io(struct z_erofs_decompress_frontend *fe, struct z_erofs_bvec *bvec) { struct z_erofs_pcluster *const pcl = fe->pcl; + /* file-backed online pages are traversed in reverse order */ + unsigned int icur = pcl->pclusterpages; - while (fe->icur > 0) { - if (!cmpxchg(&pcl->compressed_bvecs[--fe->icur].page, + while (icur > 0) { + if (!cmpxchg(&pcl->compressed_bvecs[--icur].page, NULL, bvec->page)) { - pcl->compressed_bvecs[fe->icur] = *bvec; + pcl->compressed_bvecs[icur] = *bvec; return true; } } @@ -877,8 +876,6 @@ static int z_erofs_collector_begin(struct z_erofs_decompress_frontend *fe) } z_erofs_bvec_iter_begin(&fe->biter, &fe->pcl->bvset, Z_EROFS_INLINE_BVECS, fe->pcl->vcnt); - /* since file-backed online pages are traversed in reverse order */ - fe->icur = z_erofs_pclusterpages(fe->pcl); return 0; } -- 2.17.1
