From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1752740AbdHQNEH convert rfc822-to-8bit (ORCPT ); Thu, 17 Aug 2017 09:04:07 -0400 Received: from mx1.redhat.com ([209.132.183.28]:33014 "EHLO mx1.redhat.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1751369AbdHQNEF (ORCPT ); Thu, 17 Aug 2017 09:04:05 -0400 DMARC-Filter: OpenDMARC Filter v1.3.2 mx1.redhat.com A409364B4D Authentication-Results: ext-mx06.extmail.prod.ext.phx2.redhat.com; dmarc=none (p=none dis=none) header.from=redhat.com Authentication-Results: ext-mx06.extmail.prod.ext.phx2.redhat.com; spf=fail smtp.mailfrom=longman@redhat.com Subject: Re: [PATCH v3 0/5] fs/dcache: Limit # of negative dentries To: "Wangkai (Kevin,C)" , Alexander Viro , Jonathan Corbet Cc: "linux-kernel@vger.kernel.org" , "linux-doc@vger.kernel.org" , "linux-fsdevel@vger.kernel.org" , "Paul E. McKenney" , Andrew Morton , Ingo Molnar , Miklos Szeredi , Matthew Wilcox , Larry Woodman , James Bottomley References: <1501266880-26288-1-git-send-email-longman@redhat.com> <1cdfb670-42ed-f8f6-aeab-c38ea0567651@redhat.com> <87B246BB5ED53A4C98E4F9A35839EDE1853965F7@nkgeml514-mbx.china.huawei.com> <1756a532-ed56-f2f8-0463-bd659923acd1@redhat.com> <87B246BB5ED53A4C98E4F9A35839EDE185397B0E@nkgeml514-mbx.china.huawei.com> From: Waiman Long Organization: Red Hat Message-ID: Date: Thu, 17 Aug 2017 09:04:01 -0400 User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:52.0) Gecko/20100101 Thunderbird/52.2.0 MIME-Version: 1.0 In-Reply-To: <87B246BB5ED53A4C98E4F9A35839EDE185397B0E@nkgeml514-mbx.china.huawei.com> Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8BIT Content-Language: en-US X-Greylist: Sender IP whitelisted, not delayed by milter-greylist-4.5.16 (mx1.redhat.com [10.5.110.30]); Thu, 17 Aug 2017 13:04:05 +0000 (UTC) Sender: linux-kernel-owner@vger.kernel.org List-ID: X-Mailing-List: linux-kernel@vger.kernel.org On 08/17/2017 12:00 AM, Wangkai (Kevin,C) wrote: > >>> >>> Hi Longman, >>> I am a fresher of fsdevel, about 2 weeks before, I have joined this >>> mail list, recently I have met the same problem of negative dentries, >>> in my opinion, the dentries should be remove together with the files or >> directories, I don't know you have submit this patch, I have another patch >> about this: >>> http://marc.info/?l=linux-fsdevel&m=150209902215266&w=2 >>> >>> maybe this is a foo idea... >>> >>> regards >>> Kevin >> If you look at the code, the front dentries of the LRU list are removed when >> there are too many negative dentries. That includes positive dentries as well as >> it is not practical to just remove the negative dentries. >> >> I have looked at your patch. The dentry of a removed file becomes a negative >> dentry. The kernel can keep track of those negative entries and there is no need >> to add an additional flag for that. >> >> Cheers, >> Longman > One comment about your patch: > In the patch 1/5 function dentry_kill first get dentry->d_flags, after lock parent and > Compare d_flags again, is this needed? The d_flags was changed under lock. Yes, it is necessary. We are talking about an SMP system with multiple threads running concurrently. If you look at the lock parent code, it may release the current dentry lock before taking the parent's and then the dentry lock again. As soon as the lock is released, anything can happen to the dentry including changes in d_flags. > In my patch the DCACHE_FILE_REMOVED flag was to distinguish the removed file and > The closed file, I found there was no difference of a dentry between the removed file and the closed > File, they all on the lru list. There is a difference between removed file and closed file. The type field of d_flags will be empty for a removed file which indicate a negative dentry. Anything else is a positive dentry. Look at the inline function d_is_negative() [d_is_miss()] and you will see how it is done. Cheers, Longman