From mboxrd@z Thu Jan 1 00:00:00 1970 From: Dave Chinner Subject: Re: [PATCH v2 05/28] dcache: remove dentries from LRU before putting on dispose list Date: Thu, 4 Apr 2013 17:19:38 +1100 Message-ID: <20130404061938.GD12011@dastard> References: <1364548450-28254-1-git-send-email-glommer@parallels.com> <1364548450-28254-6-git-send-email-glommer@parallels.com> Mime-Version: 1.0 Content-Type: text/plain; charset=us-ascii Cc: Glauber Costa , "linux-mm@kvack.org" , Hugh Dickins , containers@lists.linux-foundation.org, Dave Chinner , Michal Hocko , Johannes Weiner , linux-fsdevel@vger.kernel.org, Andrew Morton To: Sha Zhengju Return-path: Received: from ipmail04.adl6.internode.on.net ([150.101.137.141]:10248 "EHLO ipmail04.adl6.internode.on.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1763354Ab3DDGTm (ORCPT ); Thu, 4 Apr 2013 02:19:42 -0400 Content-Disposition: inline In-Reply-To: Sender: linux-fsdevel-owner@vger.kernel.org List-ID: On Wed, Apr 03, 2013 at 02:51:43PM +0800, Sha Zhengju wrote: > On Fri, Mar 29, 2013 at 5:13 PM, Glauber Costa wrote: > > From: Dave Chinner > > @@ -884,6 +907,28 @@ relock: > > shrink_dentry_list(&tmp); > > } > > > > +/* > > + * Mark all the dentries as on being the dispose list so we don't think > > they are > > + * still on the LRU if we try to kill them from ascending the parent > > chain in > > + * try_prune_one_dentry() rather than directly from the dispose list. > > + */ > > +static void > > +shrink_dcache_list( > > + struct list_head *dispose) > > +{ > > + struct dentry *dentry; > > + > > + rcu_read_lock(); > > + list_for_each_entry_rcu(dentry, dispose, d_lru) { > > + spin_lock(&dentry->d_lock); > > + dentry->d_flags |= DCACHE_SHRINK_LIST; > > + this_cpu_dec(nr_dentry_unused); > > > > Why here dec nr_dentry_unused again? Has it been decreased in the following > shrink_dcache_sb()? You are right, that's a bugi as we've already accounted for the dentry being pulled off the LRU list. Good catch. Cheers, Dave. -- Dave Chinner david@fromorbit.com