<feed xmlns='http://www.w3.org/2005/Atom'>
<title>kernel.git/fs/xfs/xfs_dir2_node.c, branch linux-2.6.28.y</title>
<subtitle>Hosts the 0x221E linux distro kernel.
</subtitle>
<id>https://git.0xinfinity.dev/distro/kernel.git/atom?h=linux-2.6.28.y</id>
<link rel='self' href='https://git.0xinfinity.dev/distro/kernel.git/atom?h=linux-2.6.28.y'/>
<link rel='alternate' type='text/html' href='https://git.0xinfinity.dev/distro/kernel.git/'/>
<updated>2008-07-28T06:59:01Z</updated>
<entry>
<title>[XFS] Fix returning case-preserved name with CI node form directories</title>
<updated>2008-07-28T06:59:01Z</updated>
<author>
<name>Barry Naujok</name>
</author>
<published>2008-06-23T03:25:38Z</published>
<link rel='alternate' type='text/html' href='https://git.0xinfinity.dev/distro/kernel.git/commit/?id=90bb7ab077a63facbe3aa0b9e3763a0cb956a4c1'/>
<id>urn:sha1:90bb7ab077a63facbe3aa0b9e3763a0cb956a4c1</id>
<content type='text'>
xfs_dir2_node_lookup() calls xfs_da_node_lookup_int() which iterates
through leaf blocks containing the matching hash value for the name being
looked up. Inside xfs_da_node_lookup_int(), it calls the
xfs_dir2_leafn_lookup_for_entry() for each leaf block.
xfs_dir2_leafn_lookup_for_entry() iterates through each matching
hash/offset pair doing a name comparison to find the matching dirent.

For CI mode, the state-&gt;extrablk retains the details of the block that has
the CI match so xfs_dir2_node_lookup() can return the case-preserved name.

The original implementation didn't retain the xfs_da_buf_t properly, so
the lookup was returning a bogus name to be stored in the dentry.

In the case of unlink, the bad name was passed and in debug mode, ASSERTed
when it can't find the entry.

SGI-PV: 983284

SGI-Modid: xfs-linux-melb:xfs-kern:31337a

Signed-off-by: Barry Naujok &lt;bnaujok@sgi.com&gt;
Signed-off-by: Christoph Hellwig &lt;hch@infradead.org&gt;
Signed-off-by: Lachlan McIlroy &lt;lachlan@sgi.com&gt;
</content>
</entry>
<entry>
<title>[XFS] Return case-insensitive match for dentry cache</title>
<updated>2008-07-28T06:58:40Z</updated>
<author>
<name>Barry Naujok</name>
</author>
<published>2008-05-21T06:58:22Z</published>
<link rel='alternate' type='text/html' href='https://git.0xinfinity.dev/distro/kernel.git/commit/?id=384f3ced07efdddf6838f6527366089d37843c94'/>
<id>urn:sha1:384f3ced07efdddf6838f6527366089d37843c94</id>
<content type='text'>
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.

SGI-PV: 981521
SGI-Modid: xfs-linux-melb:xfs-kern:31208a

Signed-off-by: Barry Naujok &lt;bnaujok@sgi.com&gt;
Signed-off-by: Christoph Hellwig &lt;hch@infradead.org&gt;
</content>
</entry>
<entry>
<title>[XFS] Add op_flags field and helpers to xfs_da_args</title>
<updated>2008-07-28T06:58:37Z</updated>
<author>
<name>Barry Naujok</name>
</author>
<published>2008-05-21T06:42:05Z</published>
<link rel='alternate' type='text/html' href='https://git.0xinfinity.dev/distro/kernel.git/commit/?id=6a178100abf01282eb697ab62b6086b2886dfc00'/>
<id>urn:sha1:6a178100abf01282eb697ab62b6086b2886dfc00</id>
<content type='text'>
The end of the xfs_da_args structure has 4 unsigned char fields for
true/false information on directory and attr operations using the
xfs_da_args structure.

The following converts these 4 into a op_flags field that uses the first 4
bits for these fields and allows expansion for future operation
information (eg. case-insensitive lookup request).

SGI-PV: 981520
SGI-Modid: xfs-linux-melb:xfs-kern:31206a

Signed-off-by: Barry Naujok &lt;bnaujok@sgi.com&gt;
Signed-off-by: Christoph Hellwig &lt;hch@infradead.org&gt;
</content>
</entry>
<entry>
<title>[XFS] Name operation vector for hash and compare</title>
<updated>2008-07-28T06:58:36Z</updated>
<author>
<name>Barry Naujok</name>
</author>
<published>2008-05-21T06:41:01Z</published>
<link rel='alternate' type='text/html' href='https://git.0xinfinity.dev/distro/kernel.git/commit/?id=5163f95a08cbf058ae16452c2242c5600fedc32e'/>
<id>urn:sha1:5163f95a08cbf058ae16452c2242c5600fedc32e</id>
<content type='text'>
Adds two pieces of functionality for the basis of case-insensitive support
in XFS:

1. A comparison result enumerated type: xfs_dacmp. It represents an

exact match, case-insensitive match or no match at all. This patch

only implements different and exact results.

2. xfs_nameops vector for specifying how to perform the hash generation

of filenames and comparision methods. In this patch the hash vector

points to the existing xfs_da_hashname function and the comparison

method does a length compare, and if the same, does a memcmp and

return the xfs_dacmp result.

All filename functions that use the hash (create, lookup remove, rename,
etc) now use the xfs_nameops.hashname function and all directory lookup
functions also use the xfs_nameops.compname function.

The lookup functions also handle case-insensitive results even though the
default comparison function cannot return that. And important aspect of
the lookup functions is that an exact match always has precedence over a
case-insensitive. So while a case-insensitive match is found, we have to
keep looking just in case there is an exact match. In the meantime, the
info for the first case-insensitive match is retained if no exact match is
found.

SGI-PV: 981519
SGI-Modid: xfs-linux-melb:xfs-kern:31205a

Signed-off-by: Barry Naujok &lt;bnaujok@sgi.com&gt;
Signed-off-by: Christoph Hellwig &lt;hch@infradead.org&gt;
</content>
</entry>
<entry>
<title>[XFS] Split xfs_dir2_leafn_lookup_int into its two pieces of functionality</title>
<updated>2008-07-28T06:58:03Z</updated>
<author>
<name>Barry Naujok</name>
</author>
<published>2008-04-17T06:49:43Z</published>
<link rel='alternate' type='text/html' href='https://git.0xinfinity.dev/distro/kernel.git/commit/?id=f9f6dce01905179d9a209cc1e69fe9047736c112'/>
<id>urn:sha1:f9f6dce01905179d9a209cc1e69fe9047736c112</id>
<content type='text'>
SGI-PV: 976035
SGI-Modid: xfs-linux-melb:xfs-kern:30834a

Signed-off-by: Barry Naujok &lt;bnaujok@sgi.com&gt;
Signed-off-by: Christoph Hellwig &lt;hch@infradead.org&gt;
Signed-off-by: Lachlan McIlroy &lt;lachlan@sgi.com&gt;
</content>
</entry>
<entry>
<title>xfs: convert beX_add to beX_add_cpu (new common API)</title>
<updated>2008-02-14T00:21:19Z</updated>
<author>
<name>Marcin Slusarz</name>
</author>
<published>2008-02-13T23:03:29Z</published>
<link rel='alternate' type='text/html' href='https://git.0xinfinity.dev/distro/kernel.git/commit/?id=413d57c9907c72ed608df2be72ef8ed13a3eeb46'/>
<id>urn:sha1:413d57c9907c72ed608df2be72ef8ed13a3eeb46</id>
<content type='text'>
remove beX_add functions and replace all uses with beX_add_cpu

Signed-off-by: Marcin Slusarz &lt;marcin.slusarz@gmail.com&gt;
Cc: Mark Fasheh &lt;mark.fasheh@oracle.com&gt;
Reviewed-by: Dave Chinner &lt;dgc@sgi.com&gt;
Cc: Timothy Shimmin &lt;tes@sgi.com&gt;
Cc: &lt;linux-ext4@vger.kernel.org&gt;
Signed-off-by: Andrew Morton &lt;akpm@linux-foundation.org&gt;
Signed-off-by: Linus Torvalds &lt;torvalds@linux-foundation.org&gt;
</content>
</entry>
<entry>
<title>[XFS] Radix tree based inode caching</title>
<updated>2007-10-15T06:50:50Z</updated>
<author>
<name>David Chinner</name>
</author>
<published>2007-08-28T04:00:13Z</published>
<link rel='alternate' type='text/html' href='https://git.0xinfinity.dev/distro/kernel.git/commit/?id=da353b0d64e070ae7c5342a0d56ec20ae9ef5cfb'/>
<id>urn:sha1:da353b0d64e070ae7c5342a0d56ec20ae9ef5cfb</id>
<content type='text'>
One of the perpetual scaling problems XFS has is indexing it's incore
inodes. We currently uses hashes and the default hash sizes chosen can
only ever be a tradeoff between memory consumption and the maximum
realistic size of the cache.

As a result, anyone who has millions of inodes cached on a filesystem
needs to tunes the size of the cache via the ihashsize mount option to
allow decent scalability with inode cache operations.

A further problem is the separate inode cluster hash, whose size is based
on the ihashsize but is smaller, and so under certain conditions (sparse
cluster cache population) this can become a limitation long before the
inode hash is causing issues.

The following patchset removes the inode hash and cluster hash and
replaces them with radix trees to avoid the scalability limitations of the
hashes. It also reduces the size of the inodes by 3 pointers....

SGI-PV: 969561
SGI-Modid: xfs-linux-melb:xfs-kern:29481a

Signed-off-by: David Chinner &lt;dgc@sgi.com&gt;
Signed-off-by: Christoph Hellwig &lt;hch@infradead.org&gt;
Signed-off-by: Tim Shimmin &lt;tes@sgi.com&gt;
</content>
</entry>
<entry>
<title>[XFS] Reduce shouting by removing unnecessary macros from dir2 code.</title>
<updated>2007-07-14T05:37:02Z</updated>
<author>
<name>Christoph Hellwig</name>
</author>
<published>2007-06-28T06:43:50Z</published>
<link rel='alternate' type='text/html' href='https://git.0xinfinity.dev/distro/kernel.git/commit/?id=bbaaf53808c778bda24f8245a440c5ceacc1a37d'/>
<id>urn:sha1:bbaaf53808c778bda24f8245a440c5ceacc1a37d</id>
<content type='text'>
SGI-PV: 966505
SGI-Modid: xfs-linux-melb:xfs-kern:28947a

Signed-off-by: Christoph Hellwig &lt;hch@infradead.org&gt;
Signed-off-by: David Chinner &lt;dgc@sgi.com&gt;
Signed-off-by: Tim Shimmin &lt;tes@sgi.com&gt;
</content>
</entry>
<entry>
<title>[XFS] the "aendp" arg to xfs_dir2_data_freescan is always NULL, remove it.</title>
<updated>2007-05-08T03:48:49Z</updated>
<author>
<name>Eric Sandeen</name>
</author>
<published>2007-05-08T03:48:49Z</published>
<link rel='alternate' type='text/html' href='https://git.0xinfinity.dev/distro/kernel.git/commit/?id=ef497f8a1eafe0447f0473940ff2e0f6c8519a14'/>
<id>urn:sha1:ef497f8a1eafe0447f0473940ff2e0f6c8519a14</id>
<content type='text'>
Patch provided by Eric Sandeen.

SGI-PV: 961694
SGI-Modid: xfs-linux-melb:xfs-kern:28204a

Signed-off-by: Eric Sandeen &lt;sandeen@sandeen.net&gt;
Signed-off-by: Lachlan McIlroy &lt;lachlan@sgi.com&gt;
Signed-off-by: Tim Shimmin &lt;tes@sgi.com&gt;
</content>
</entry>
<entry>
<title>[XFS] Remove version 1 directory code.	Never functioned on Linux, just</title>
<updated>2006-06-20T03:04:51Z</updated>
<author>
<name>Nathan Scott</name>
</author>
<published>2006-06-20T03:04:51Z</published>
<link rel='alternate' type='text/html' href='https://git.0xinfinity.dev/distro/kernel.git/commit/?id=f6c2d1fa6310a71b1c2e05fc6d9ff9b91489fa0e'/>
<id>urn:sha1:f6c2d1fa6310a71b1c2e05fc6d9ff9b91489fa0e</id>
<content type='text'>
pure bloat.

SGI-PV: 952969
SGI-Modid: xfs-linux-melb:xfs-kern:26251a

Signed-off-by: Nathan Scott &lt;nathans@sgi.com&gt;
</content>
</entry>
</feed>
