[Top] [All Lists]

Re: TAKE 981521 - Return actual name for CI match for dentry cache

To: Barry Naujok <bnaujok@xxxxxxx>
Subject: Re: TAKE 981521 - Return actual name for CI match for dentry cache
From: Christoph Hellwig <hch@xxxxxxxxxxxxx>
Date: Wed, 21 May 2008 03:36:25 -0400
Cc: sgi.bugs.xfs@xxxxxxxxxxxx, xfs@xxxxxxxxxxx
In-reply-to: <20080521034449.67F4758C4C29@xxxxxxxxxxxxxxxxxxxxxxx>
References: <20080521034449.67F4758C4C29@xxxxxxxxxxxxxxxxxxxxxxx>
Sender: xfs-bounce@xxxxxxxxxxx
User-agent: Mutt/1.5.17 (2007-11-01)
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.

<Prev in Thread] Current Thread [Next in Thread>