Hi Gao, I love your patch! Yet something to improve: [auto build test ERROR on xfs-linux/for-next] [also build test ERROR on linus/master v6.2-rc1 next-20221226] [If your patch is applied to the wrong git tree, kindly drop us a note. And when submitting patch, we suggest to use '--base' as documented in https://git-scm.com/docs/git-format-patch#_base_tree_information] url: https://github.com/intel-lab-lkp/linux/commits/Gao-Xiang/xfs-add-AGFL-refilling-reservation/20221228-234851 base: https://git.kernel.org/pub/scm/fs/xfs/xfs-linux.git for-next patch link: https://lore.kernel.org/r/Y6xk2xwrkdF%2FBoXM%40B-P7TQMD6M-0146.local patch subject: [PATCH 1/2] xfs: add AGFL refilling reservation config: x86_64-rhel-8.3-rust compiler: clang version 14.0.6 (https://github.com/llvm/llvm-project f28c006a5895fc0e329fe15fead81e37457cb1d1) reproduce (this is a W=1 build): wget https://raw.githubusercontent.com/intel/lkp-tests/master/sbin/make.cross -O ~/bin/make.cross chmod +x ~/bin/make.cross # https://github.com/intel-lab-lkp/linux/commit/6d2b1213e868e4a8ac8031b7ac71abed64aa68fa git remote add linux-review https://github.com/intel-lab-lkp/linux git fetch --no-tags linux-review Gao-Xiang/xfs-add-AGFL-refilling-reservation/20221228-234851 git checkout 6d2b1213e868e4a8ac8031b7ac71abed64aa68fa # save the config file mkdir build_dir && cp config build_dir/.config COMPILER_INSTALL_PATH=$HOME/0day COMPILER=clang make.cross W=1 O=build_dir ARCH=x86_64 olddefconfig COMPILER_INSTALL_PATH=$HOME/0day COMPILER=clang make.cross W=1 O=build_dir ARCH=x86_64 SHELL=/bin/bash fs/xfs/ If you fix the issue, kindly add following tag where applicable | Reported-by: kernel test robot All error/warnings (new ones prefixed by >>): >> fs/xfs/libxfs/xfs_alloc.c:2596:1: warning: no previous prototype for function 'xfs_fill_agfl' [-Wmissing-prototypes] xfs_fill_agfl( ^ fs/xfs/libxfs/xfs_alloc.c:2595:1: note: declare 'static' if the function is not intended to be used outside of this translation unit int ^ static 1 warning generated. -- >> fs/xfs/libxfs/xfs_ag_resv.c:249:1: warning: no previous prototype for function 'xfs_agfl_calc_reserves' [-Wmissing-prototypes] xfs_agfl_calc_reserves( ^ fs/xfs/libxfs/xfs_ag_resv.c:248:1: note: declare 'static' if the function is not intended to be used outside of this translation unit int ^ static 1 warning generated. -- >> fs/xfs/scrub/fscounters.c:248:25: error: no member named 'pag_rmapbt_resv' in 'struct xfs_perag' fsc->fdblocks -= pag->pag_rmapbt_resv.ar_orig_reserved; ~~~ ^ 1 error generated. vim +248 fs/xfs/scrub/fscounters.c e147a756ab263f Darrick J. Wong 2021-04-26 194 75efa57d0bf5fc Darrick J. Wong 2019-04-25 195 /* 75efa57d0bf5fc Darrick J. Wong 2019-04-25 196 * Calculate what the global in-core counters ought to be from the incore 75efa57d0bf5fc Darrick J. Wong 2019-04-25 197 * per-AG structure. Callers can compare this to the actual in-core counters 75efa57d0bf5fc Darrick J. Wong 2019-04-25 198 * to estimate by how much both in-core and on-disk counters need to be 75efa57d0bf5fc Darrick J. Wong 2019-04-25 199 * adjusted. 75efa57d0bf5fc Darrick J. Wong 2019-04-25 200 */ 75efa57d0bf5fc Darrick J. Wong 2019-04-25 201 STATIC int 75efa57d0bf5fc Darrick J. Wong 2019-04-25 202 xchk_fscount_aggregate_agcounts( 75efa57d0bf5fc Darrick J. Wong 2019-04-25 203 struct xfs_scrub *sc, 75efa57d0bf5fc Darrick J. Wong 2019-04-25 204 struct xchk_fscounters *fsc) 75efa57d0bf5fc Darrick J. Wong 2019-04-25 205 { 75efa57d0bf5fc Darrick J. Wong 2019-04-25 206 struct xfs_mount *mp = sc->mp; 75efa57d0bf5fc Darrick J. Wong 2019-04-25 207 struct xfs_perag *pag; 75efa57d0bf5fc Darrick J. Wong 2019-04-25 208 uint64_t delayed; 75efa57d0bf5fc Darrick J. Wong 2019-04-25 209 xfs_agnumber_t agno; 75efa57d0bf5fc Darrick J. Wong 2019-04-25 210 int tries = 8; 8ef34723eff088 Darrick J. Wong 2019-11-05 211 int error = 0; 75efa57d0bf5fc Darrick J. Wong 2019-04-25 212 75efa57d0bf5fc Darrick J. Wong 2019-04-25 213 retry: 75efa57d0bf5fc Darrick J. Wong 2019-04-25 214 fsc->icount = 0; 75efa57d0bf5fc Darrick J. Wong 2019-04-25 215 fsc->ifree = 0; 75efa57d0bf5fc Darrick J. Wong 2019-04-25 216 fsc->fdblocks = 0; 75efa57d0bf5fc Darrick J. Wong 2019-04-25 217 f250eedcf7621b Dave Chinner 2021-06-02 218 for_each_perag(mp, agno, pag) { f250eedcf7621b Dave Chinner 2021-06-02 219 if (xchk_should_terminate(sc, &error)) f250eedcf7621b Dave Chinner 2021-06-02 220 break; 75efa57d0bf5fc Darrick J. Wong 2019-04-25 221 75efa57d0bf5fc Darrick J. Wong 2019-04-25 222 /* This somehow got unset since the warmup? */ 75efa57d0bf5fc Darrick J. Wong 2019-04-25 223 if (!pag->pagi_init || !pag->pagf_init) { f250eedcf7621b Dave Chinner 2021-06-02 224 error = -EFSCORRUPTED; f250eedcf7621b Dave Chinner 2021-06-02 225 break; 75efa57d0bf5fc Darrick J. Wong 2019-04-25 226 } 75efa57d0bf5fc Darrick J. Wong 2019-04-25 227 75efa57d0bf5fc Darrick J. Wong 2019-04-25 228 /* Count all the inodes */ 75efa57d0bf5fc Darrick J. Wong 2019-04-25 229 fsc->icount += pag->pagi_count; 75efa57d0bf5fc Darrick J. Wong 2019-04-25 230 fsc->ifree += pag->pagi_freecount; 75efa57d0bf5fc Darrick J. Wong 2019-04-25 231 75efa57d0bf5fc Darrick J. Wong 2019-04-25 232 /* Add up the free/freelist/bnobt/cntbt blocks */ 75efa57d0bf5fc Darrick J. Wong 2019-04-25 233 fsc->fdblocks += pag->pagf_freeblks; 75efa57d0bf5fc Darrick J. Wong 2019-04-25 234 fsc->fdblocks += pag->pagf_flcount; ebd9027d088b3a Dave Chinner 2021-08-18 235 if (xfs_has_lazysbcount(sc->mp)) { 75efa57d0bf5fc Darrick J. Wong 2019-04-25 236 fsc->fdblocks += pag->pagf_btreeblks; e147a756ab263f Darrick J. Wong 2021-04-26 237 } else { e147a756ab263f Darrick J. Wong 2021-04-26 238 error = xchk_fscount_btreeblks(sc, fsc, agno); f250eedcf7621b Dave Chinner 2021-06-02 239 if (error) e147a756ab263f Darrick J. Wong 2021-04-26 240 break; e147a756ab263f Darrick J. Wong 2021-04-26 241 } 75efa57d0bf5fc Darrick J. Wong 2019-04-25 242 75efa57d0bf5fc Darrick J. Wong 2019-04-25 243 /* 75efa57d0bf5fc Darrick J. Wong 2019-04-25 244 * Per-AG reservations are taken out of the incore counters, 75efa57d0bf5fc Darrick J. Wong 2019-04-25 245 * so they must be left out of the free blocks computation. 75efa57d0bf5fc Darrick J. Wong 2019-04-25 246 */ 75efa57d0bf5fc Darrick J. Wong 2019-04-25 247 fsc->fdblocks -= pag->pag_meta_resv.ar_reserved; 75efa57d0bf5fc Darrick J. Wong 2019-04-25 @248 fsc->fdblocks -= pag->pag_rmapbt_resv.ar_orig_reserved; 75efa57d0bf5fc Darrick J. Wong 2019-04-25 249 75efa57d0bf5fc Darrick J. Wong 2019-04-25 250 } f250eedcf7621b Dave Chinner 2021-06-02 251 if (pag) f250eedcf7621b Dave Chinner 2021-06-02 252 xfs_perag_put(pag); 11f97e68458346 Darrick J. Wong 2022-11-06 253 if (error) { 11f97e68458346 Darrick J. Wong 2022-11-06 254 xchk_set_incomplete(sc); 8ef34723eff088 Darrick J. Wong 2019-11-05 255 return error; 11f97e68458346 Darrick J. Wong 2022-11-06 256 } 8ef34723eff088 Darrick J. Wong 2019-11-05 257 75efa57d0bf5fc Darrick J. Wong 2019-04-25 258 /* 75efa57d0bf5fc Darrick J. Wong 2019-04-25 259 * The global incore space reservation is taken from the incore 75efa57d0bf5fc Darrick J. Wong 2019-04-25 260 * counters, so leave that out of the computation. 75efa57d0bf5fc Darrick J. Wong 2019-04-25 261 */ 75efa57d0bf5fc Darrick J. Wong 2019-04-25 262 fsc->fdblocks -= mp->m_resblks_avail; 75efa57d0bf5fc Darrick J. Wong 2019-04-25 263 75efa57d0bf5fc Darrick J. Wong 2019-04-25 264 /* 75efa57d0bf5fc Darrick J. Wong 2019-04-25 265 * Delayed allocation reservations are taken out of the incore counters 75efa57d0bf5fc Darrick J. Wong 2019-04-25 266 * but not recorded on disk, so leave them and their indlen blocks out 75efa57d0bf5fc Darrick J. Wong 2019-04-25 267 * of the computation. 75efa57d0bf5fc Darrick J. Wong 2019-04-25 268 */ 75efa57d0bf5fc Darrick J. Wong 2019-04-25 269 delayed = percpu_counter_sum(&mp->m_delalloc_blks); 75efa57d0bf5fc Darrick J. Wong 2019-04-25 270 fsc->fdblocks -= delayed; 75efa57d0bf5fc Darrick J. Wong 2019-04-25 271 75efa57d0bf5fc Darrick J. Wong 2019-04-25 272 trace_xchk_fscounters_calc(mp, fsc->icount, fsc->ifree, fsc->fdblocks, 75efa57d0bf5fc Darrick J. Wong 2019-04-25 273 delayed); 75efa57d0bf5fc Darrick J. Wong 2019-04-25 274 75efa57d0bf5fc Darrick J. Wong 2019-04-25 275 75efa57d0bf5fc Darrick J. Wong 2019-04-25 276 /* Bail out if the values we compute are totally nonsense. */ 75efa57d0bf5fc Darrick J. Wong 2019-04-25 277 if (fsc->icount < fsc->icount_min || fsc->icount > fsc->icount_max || 75efa57d0bf5fc Darrick J. Wong 2019-04-25 278 fsc->fdblocks > mp->m_sb.sb_dblocks || 75efa57d0bf5fc Darrick J. Wong 2019-04-25 279 fsc->ifree > fsc->icount_max) 75efa57d0bf5fc Darrick J. Wong 2019-04-25 280 return -EFSCORRUPTED; 75efa57d0bf5fc Darrick J. Wong 2019-04-25 281 75efa57d0bf5fc Darrick J. Wong 2019-04-25 282 /* 75efa57d0bf5fc Darrick J. Wong 2019-04-25 283 * If ifree > icount then we probably had some perturbation in the 75efa57d0bf5fc Darrick J. Wong 2019-04-25 284 * counters while we were calculating things. We'll try a few times 75efa57d0bf5fc Darrick J. Wong 2019-04-25 285 * to maintain ifree <= icount before giving up. 75efa57d0bf5fc Darrick J. Wong 2019-04-25 286 */ 75efa57d0bf5fc Darrick J. Wong 2019-04-25 287 if (fsc->ifree > fsc->icount) { 75efa57d0bf5fc Darrick J. Wong 2019-04-25 288 if (tries--) 75efa57d0bf5fc Darrick J. Wong 2019-04-25 289 goto retry; 75efa57d0bf5fc Darrick J. Wong 2019-04-25 290 xchk_set_incomplete(sc); 75efa57d0bf5fc Darrick J. Wong 2019-04-25 291 return 0; 75efa57d0bf5fc Darrick J. Wong 2019-04-25 292 } 75efa57d0bf5fc Darrick J. Wong 2019-04-25 293 75efa57d0bf5fc Darrick J. Wong 2019-04-25 294 return 0; 75efa57d0bf5fc Darrick J. Wong 2019-04-25 295 } 75efa57d0bf5fc Darrick J. Wong 2019-04-25 296 -- 0-DAY CI Kernel Test Service https://01.org/lkp