Re: [PATCH v7 6/6] fs/dcache: Allow deconfiguration of negative dentry code to reduce kernel size

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



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


[Index of Archives]     [Linux Ext4 Filesystem]     [Union Filesystem]     [Filesystem Testing]     [Ceph Users]     [Ecryptfs]     [AutoFS]     [Kernel Newbies]     [Share Photos]     [Security]     [Netfilter]     [Bugtraq]     [Yosemite News]     [MIPS Linux]     [ARM Linux]     [Linux Security]     [Linux Cachefs]     [Reiser Filesystem]     [Linux RAID]     [Samba]     [Device Mapper]     [CEPH Development]

  Powered by Linux