Hi Waiman, Thank you for the patch! Yet something to improve: [auto build test ERROR on linus/master] [also build test ERROR on v4.18-rc4] [cannot apply to next-20180713] [if your patch is applied to the wrong git tree, please drop us a note to help improve the system] url: https://github.com/0day-ci/linux/commits/Waiman-Long/fs-dcache-Track-report-number-of-negative-dentries/20180714-161258 config: h8300-h8300h-sim_defconfig (attached as .config) compiler: h8300-linux-gcc (GCC) 8.1.0 reproduce: wget https://raw.githubusercontent.com/intel/lkp-tests/master/sbin/make.cross -O ~/bin/make.cross chmod +x ~/bin/make.cross # save the attached .config to linux build tree GCC_VERSION=8.1.0 make.cross ARCH=h8300 :::::: branch date: 65 minutes ago :::::: commit date: 65 minutes ago All errors (new ones prefixed by >>): fs/dcache.c: In function 'neg_dentry_inc_slowpath': >> fs/dcache.c:374:8: error: implicit declaration of function 'get_nr_dentry_neg'; did you mean 'get_nr_dirty_inodes'? [-Werror=implicit-function-declaration] cnt = get_nr_dentry_neg(); ^~~~~~~~~~~~~~~~~ get_nr_dirty_inodes cc1: some warnings being treated as errors # https://github.com/0day-ci/linux/commit/ca68ee513a450445b269248c2859302c8931a294 git remote add linux-review https://github.com/0day-ci/linux git remote update linux-review git checkout ca68ee513a450445b269248c2859302c8931a294 vim +374 fs/dcache.c bcc9ba8b Waiman Long 2018-07-12 311 2ccdd02c Waiman Long 2018-07-12 312 static noinline int neg_dentry_inc_slowpath(struct dentry *dentry) bcc9ba8b Waiman Long 2018-07-12 313 { bcc9ba8b Waiman Long 2018-07-12 314 long cnt = 0, *pcnt; 2aa8bf46 Waiman Long 2018-07-12 315 unsigned long current_time; bcc9ba8b Waiman Long 2018-07-12 316 bcc9ba8b Waiman Long 2018-07-12 317 /* bcc9ba8b Waiman Long 2018-07-12 318 * Try to move some negative dentry quota from the global free bcc9ba8b Waiman Long 2018-07-12 319 * pool to the percpu count to allow more negative dentries to bcc9ba8b Waiman Long 2018-07-12 320 * be added to the LRU. bcc9ba8b Waiman Long 2018-07-12 321 */ bcc9ba8b Waiman Long 2018-07-12 322 pcnt = get_cpu_ptr(&nr_dentry_neg); bcc9ba8b Waiman Long 2018-07-12 323 if ((READ_ONCE(ndblk.nfree) > 0) && bcc9ba8b Waiman Long 2018-07-12 324 (*pcnt > neg_dentry_percpu_limit)) { bcc9ba8b Waiman Long 2018-07-12 325 cnt = __neg_dentry_nfree_dec(*pcnt - neg_dentry_percpu_limit); bcc9ba8b Waiman Long 2018-07-12 326 *pcnt -= cnt; bcc9ba8b Waiman Long 2018-07-12 327 } bcc9ba8b Waiman Long 2018-07-12 328 put_cpu_ptr(&nr_dentry_neg); bcc9ba8b Waiman Long 2018-07-12 329 2aa8bf46 Waiman Long 2018-07-12 330 if (cnt) 2aa8bf46 Waiman Long 2018-07-12 331 goto out; 2aa8bf46 Waiman Long 2018-07-12 332 bcc9ba8b Waiman Long 2018-07-12 333 /* 2ccdd02c Waiman Long 2018-07-12 334 * Kill the dentry by setting the DCACHE_KILL_NEGATIVE flag and 2ccdd02c Waiman Long 2018-07-12 335 * dec the negative dentry count if the enforcing option is on. 2ccdd02c Waiman Long 2018-07-12 336 */ 2ccdd02c Waiman Long 2018-07-12 337 if (neg_dentry_enforce) { 2ccdd02c Waiman Long 2018-07-12 338 dentry->d_flags |= DCACHE_KILL_NEGATIVE; 2ccdd02c Waiman Long 2018-07-12 339 this_cpu_dec(nr_dentry_neg); 2ccdd02c Waiman Long 2018-07-12 340 2ccdd02c Waiman Long 2018-07-12 341 /* 2ccdd02c Waiman Long 2018-07-12 342 * When the dentry is not put into the LRU, we 2ccdd02c Waiman Long 2018-07-12 343 * need to keep the reference count to 1 to 2ccdd02c Waiman Long 2018-07-12 344 * avoid problem when killing it. 2ccdd02c Waiman Long 2018-07-12 345 */ 2ccdd02c Waiman Long 2018-07-12 346 WARN_ON_ONCE(dentry->d_lockref.count); 2ccdd02c Waiman Long 2018-07-12 347 dentry->d_lockref.count = 1; 2ccdd02c Waiman Long 2018-07-12 348 return -1; /* Kill the dentry now */ 2ccdd02c Waiman Long 2018-07-12 349 } 2ccdd02c Waiman Long 2018-07-12 350 2ccdd02c Waiman Long 2018-07-12 351 /* 2aa8bf46 Waiman Long 2018-07-12 352 * Put out a warning every minute or so if there are just too many 2aa8bf46 Waiman Long 2018-07-12 353 * negative dentries. bcc9ba8b Waiman Long 2018-07-12 354 */ 2aa8bf46 Waiman Long 2018-07-12 355 current_time = jiffies; bcc9ba8b Waiman Long 2018-07-12 356 2aa8bf46 Waiman Long 2018-07-12 357 if (current_time < ndblk.warn_jiffies + NEG_WARN_PERIOD) 2aa8bf46 Waiman Long 2018-07-12 358 goto out; 2aa8bf46 Waiman Long 2018-07-12 359 /* 2aa8bf46 Waiman Long 2018-07-12 360 * Update the time in ndblk.warn_jiffies and print a warning 2aa8bf46 Waiman Long 2018-07-12 361 * if time update is successful. 2aa8bf46 Waiman Long 2018-07-12 362 */ 2aa8bf46 Waiman Long 2018-07-12 363 raw_spin_lock(&ndblk.nfree_lock); 2aa8bf46 Waiman Long 2018-07-12 364 if (current_time < ndblk.warn_jiffies + NEG_WARN_PERIOD) { 2aa8bf46 Waiman Long 2018-07-12 365 raw_spin_unlock(&ndblk.nfree_lock); 2aa8bf46 Waiman Long 2018-07-12 366 goto out; 2aa8bf46 Waiman Long 2018-07-12 367 } 2aa8bf46 Waiman Long 2018-07-12 368 ndblk.warn_jiffies = current_time; 2aa8bf46 Waiman Long 2018-07-12 369 raw_spin_unlock(&ndblk.nfree_lock); 2aa8bf46 Waiman Long 2018-07-12 370 2aa8bf46 Waiman Long 2018-07-12 371 /* 2aa8bf46 Waiman Long 2018-07-12 372 * Get the current negative dentry count & print a warning. 2aa8bf46 Waiman Long 2018-07-12 373 */ 2aa8bf46 Waiman Long 2018-07-12 @374 cnt = get_nr_dentry_neg(); 2aa8bf46 Waiman Long 2018-07-12 375 pr_warn("Warning: Too many negative dentries (%ld). " 2ccdd02c Waiman Long 2018-07-12 376 "This warning can be disabled by writing 0 to \"fs/neg-dentry-limit\", increasing the limit or writing 1 to \"fs/neg-dentry-enforce\".\n", 2aa8bf46 Waiman Long 2018-07-12 377 cnt); 2aa8bf46 Waiman Long 2018-07-12 378 out: 2ccdd02c Waiman Long 2018-07-12 379 return 0; bcc9ba8b Waiman Long 2018-07-12 380 } bcc9ba8b Waiman Long 2018-07-12 381 :::::: The code at line 374 was first introduced by commit :::::: 2aa8bf4658af0dbc07ae9ea07d04937a347e3ef4 fs/dcache: Print negative dentry warning every min until turned off by user :::::: TO: Waiman Long <longman@xxxxxxxxxx> :::::: CC: 0day robot <lkp@xxxxxxxxx> --- 0-DAY kernel test infrastructure Open Source Technology Center https://lists.01.org/pipermail/kbuild-all Intel Corporation
Attachment:
.config.gz
Description: application/gzip