Received: with ECARTIS (v1.0.0; list xfs); Wed, 21 May 2008 00:38:24 -0700 (PDT) X-Spam-Checker-Version: SpamAssassin 3.3.0-r574664 (2007-09-11) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=-2.1 required=5.0 tests=AWL,BAYES_00 autolearn=ham version=3.3.0-r574664 Received: from larry.melbourne.sgi.com (larry.melbourne.sgi.com [134.14.52.130]) by oss.sgi.com (8.12.11.20060308/8.12.11/SuSE Linux 0.7) with SMTP id m4L7cFep027032 for ; Wed, 21 May 2008 00:38:18 -0700 Received: from pc-bnaujok.melbourne.sgi.com (pc-bnaujok.melbourne.sgi.com [134.14.55.58]) by larry.melbourne.sgi.com (950413.SGI.8.6.12/950213.SGI.AUTOCF) via ESMTP id RAA02562; Wed, 21 May 2008 17:38:56 +1000 To: "Christoph Hellwig" Subject: Re: TAKE 981521 - Return actual name for CI match for dentry cache From: "Barry Naujok" Organization: SGI Cc: sgi.bugs.xfs@engr.sgi.com, xfs@oss.sgi.com Content-Type: text/plain; format=flowed; delsp=yes; charset=utf-8 MIME-Version: 1.0 References: <20080521034449.67F4758C4C29@chook.melbourne.sgi.com> <20080521073625.GA26580@infradead.org> Content-Transfer-Encoding: 7bit Date: Wed, 21 May 2008 17:40:56 +1000 Message-ID: In-Reply-To: <20080521073625.GA26580@infradead.org> User-Agent: Opera Mail/9.24 (Win32) X-Virus-Scanned: ClamAV 0.91.2/6021/Wed Feb 27 15:55:48 2008 on oss.sgi.com X-Virus-Status: Clean X-archive-position: 16045 X-ecartis-version: Ecartis v1.0.0 Sender: xfs-bounce@oss.sgi.com Errors-to: xfs-bounce@oss.sgi.com X-original-sender: bnaujok@sgi.com Precedence: bulk X-list: xfs On Wed, 21 May 2008 17:36:25 +1000, Christoph Hellwig wrote: > On Wed, May 21, 2008 at 01:44:49PM +1000, Barry Naujok wrote: >> Return case-insensitive match for dentry cache >> >> This implements the code to store the actual filename found >> during a lookup in the dentry cache and to avoid multiple entries >> in the dcache pointing to the same inode. >> >> To avoid polluting the dcache, we implement a new directory inode >> operations for lookup. xfs_vn_ci_lookup() stores the correct case >> name in the dcache. >> >> The "actual name" is only allocated and returned for a case- >> insensitive match and not an actual match. >> >> Another unusual interaction with the dcache is not storing >> negative dentries like other filesystems doing a d_add(dentry, NULL) >> when an ENOENT is returned. During the VFS lookup, if a dentry >> returned has no inode, dput is called and ENOENT is returned. >> By not doing a d_add, this actually removes it completely from >> the dcache to be reused. create/rename have to be modified to >> support unhashed dentries being passed in. > > This requires the d_add_ci helper which doesn't exist in the CVS on oss. I have pushed all patches to oss master git tree now. I'm not sure how CVS can get updated. Barry.