From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Date: Tue, 17 Jul 2018 09:24:44 +0800 From: kbuild test robot To: Waiman Long Cc: kbuild-all@01.org, Alexander Viro , Jonathan Corbet , "Luis R. Rodriguez" , Kees Cook , linux-kernel@vger.kernel.org, linux-fsdevel@vger.kernel.org, linux-mm@kvack.org, linux-doc@vger.kernel.org, Linus Torvalds , Jan Kara , "Paul E. McKenney" , Andrew Morton , Ingo Molnar , Miklos Szeredi , Matthew Wilcox , Larry Woodman , James Bottomley , "Wangkai (Kevin C)" , Michal Hocko , Waiman Long Subject: Re: [PATCH v7 4/6] fs/dcache: Print negative dentry warning every min until turned off by user Message-ID: <20180717012444.GB10593@intel.com> MIME-Version: 1.0 Content-Type: multipart/mixed; boundary="cxfMsoqvp1jUizWj" Content-Disposition: inline In-Reply-To: <1531413965-5401-5-git-send-email-longman@redhat.com> Sender: owner-linux-mm@kvack.org List-ID: --cxfMsoqvp1jUizWj Content-Type: text/plain; charset=us-ascii Content-Disposition: inline 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: i386-tinyconfig (attached as .config) compiler: gcc-7 (Debian 7.3.0-16) 7.3.0 reproduce: # save the attached .config to linux build tree make ARCH=i386 :::::: branch date: 45 minutes ago :::::: commit date: 45 minutes ago Note: the linux-review/Waiman-Long/fs-dcache-Track-report-number-of-negative-dentries/20180714-161258 HEAD ca68ee513a450445b269248c2859302c8931a294 builds fine. It only hurts bisectibility. All errors (new ones prefixed by >>): fs/dcache.c: In function 'neg_dentry_inc_slowpath': >> fs/dcache.c:355:8: error: implicit declaration of function 'get_nr_dentry_neg'; did you mean 'neg_dentry_dec'? [-Werror=implicit-function-declaration] cnt = get_nr_dentry_neg(); ^~~~~~~~~~~~~~~~~ neg_dentry_dec cc1: some warnings being treated as errors # https://github.com/0day-ci/linux/commit/2aa8bf4658af0dbc07ae9ea07d04937a347e3ef4 git remote add linux-review https://github.com/0day-ci/linux git remote update linux-review git checkout 2aa8bf4658af0dbc07ae9ea07d04937a347e3ef4 vim +355 fs/dcache.c bcc9ba8b Waiman Long 2018-07-12 310 bcc9ba8b Waiman Long 2018-07-12 311 static noinline void neg_dentry_inc_slowpath(struct dentry *dentry) bcc9ba8b Waiman Long 2018-07-12 312 { bcc9ba8b Waiman Long 2018-07-12 313 long cnt = 0, *pcnt; 2aa8bf46 Waiman Long 2018-07-12 314 unsigned long current_time; bcc9ba8b Waiman Long 2018-07-12 315 bcc9ba8b Waiman Long 2018-07-12 316 /* bcc9ba8b Waiman Long 2018-07-12 317 * Try to move some negative dentry quota from the global free bcc9ba8b Waiman Long 2018-07-12 318 * pool to the percpu count to allow more negative dentries to bcc9ba8b Waiman Long 2018-07-12 319 * be added to the LRU. bcc9ba8b Waiman Long 2018-07-12 320 */ bcc9ba8b Waiman Long 2018-07-12 321 pcnt = get_cpu_ptr(&nr_dentry_neg); bcc9ba8b Waiman Long 2018-07-12 322 if ((READ_ONCE(ndblk.nfree) > 0) && bcc9ba8b Waiman Long 2018-07-12 323 (*pcnt > neg_dentry_percpu_limit)) { bcc9ba8b Waiman Long 2018-07-12 324 cnt = __neg_dentry_nfree_dec(*pcnt - neg_dentry_percpu_limit); bcc9ba8b Waiman Long 2018-07-12 325 *pcnt -= cnt; bcc9ba8b Waiman Long 2018-07-12 326 } bcc9ba8b Waiman Long 2018-07-12 327 put_cpu_ptr(&nr_dentry_neg); bcc9ba8b Waiman Long 2018-07-12 328 2aa8bf46 Waiman Long 2018-07-12 329 if (cnt) 2aa8bf46 Waiman Long 2018-07-12 330 goto out; 2aa8bf46 Waiman Long 2018-07-12 331 bcc9ba8b Waiman Long 2018-07-12 332 /* 2aa8bf46 Waiman Long 2018-07-12 333 * Put out a warning every minute or so if there are just too many 2aa8bf46 Waiman Long 2018-07-12 334 * negative dentries. bcc9ba8b Waiman Long 2018-07-12 335 */ 2aa8bf46 Waiman Long 2018-07-12 336 current_time = jiffies; bcc9ba8b Waiman Long 2018-07-12 337 2aa8bf46 Waiman Long 2018-07-12 338 if (current_time < ndblk.warn_jiffies + NEG_WARN_PERIOD) 2aa8bf46 Waiman Long 2018-07-12 339 goto out; 2aa8bf46 Waiman Long 2018-07-12 340 /* 2aa8bf46 Waiman Long 2018-07-12 341 * Update the time in ndblk.warn_jiffies and print a warning 2aa8bf46 Waiman Long 2018-07-12 342 * if time update is successful. 2aa8bf46 Waiman Long 2018-07-12 343 */ 2aa8bf46 Waiman Long 2018-07-12 344 raw_spin_lock(&ndblk.nfree_lock); 2aa8bf46 Waiman Long 2018-07-12 345 if (current_time < ndblk.warn_jiffies + NEG_WARN_PERIOD) { 2aa8bf46 Waiman Long 2018-07-12 346 raw_spin_unlock(&ndblk.nfree_lock); 2aa8bf46 Waiman Long 2018-07-12 347 goto out; 2aa8bf46 Waiman Long 2018-07-12 348 } 2aa8bf46 Waiman Long 2018-07-12 349 ndblk.warn_jiffies = current_time; 2aa8bf46 Waiman Long 2018-07-12 350 raw_spin_unlock(&ndblk.nfree_lock); 2aa8bf46 Waiman Long 2018-07-12 351 2aa8bf46 Waiman Long 2018-07-12 352 /* 2aa8bf46 Waiman Long 2018-07-12 353 * Get the current negative dentry count & print a warning. 2aa8bf46 Waiman Long 2018-07-12 354 */ 2aa8bf46 Waiman Long 2018-07-12 @355 cnt = get_nr_dentry_neg(); 2aa8bf46 Waiman Long 2018-07-12 356 pr_warn("Warning: Too many negative dentries (%ld). " 2aa8bf46 Waiman Long 2018-07-12 357 "This warning can be disabled by writing 0 to \"fs/neg-dentry-limit\" or increasing the limit.\n", 2aa8bf46 Waiman Long 2018-07-12 358 cnt); 2aa8bf46 Waiman Long 2018-07-12 359 out: 2aa8bf46 Waiman Long 2018-07-12 360 return; bcc9ba8b Waiman Long 2018-07-12 361 } bcc9ba8b Waiman Long 2018-07-12 362 --- 0-DAY kernel test infrastructure Open Source Technology Center https://lists.01.org/pipermail/kbuild-all Intel Corporation --cxfMsoqvp1jUizWj Content-Type: application/gzip Content-Disposition: attachment; filename=".config.gz" Content-Transfer-Encoding: base64 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 --cxfMsoqvp1jUizWj--