<feed xmlns='http://www.w3.org/2005/Atom'>
<title>kernel.git/fs/xfs/xfs_dir2_data.c, branch linux-3.2.y</title>
<subtitle>Hosts the 0x221E linux distro kernel.
</subtitle>
<id>https://git.0xinfinity.dev/distro/kernel.git/atom?h=linux-3.2.y</id>
<link rel='self' href='https://git.0xinfinity.dev/distro/kernel.git/atom?h=linux-3.2.y'/>
<link rel='alternate' type='text/html' href='https://git.0xinfinity.dev/distro/kernel.git/'/>
<updated>2011-07-13T11:43:48Z</updated>
<entry>
<title>xfs: reshuffle dir2 headers</title>
<updated>2011-07-13T11:43:48Z</updated>
<author>
<name>Christoph Hellwig</name>
</author>
<published>2011-07-13T11:43:48Z</published>
<link rel='alternate' type='text/html' href='https://git.0xinfinity.dev/distro/kernel.git/commit/?id=5792664070c62479b088e4909000582de3686396'/>
<id>urn:sha1:5792664070c62479b088e4909000582de3686396</id>
<content type='text'>
Replace the current mess of dir2 headers with just three that have a clear
purpose:

 - xfs_dir2_format.h for all format definitions, including the inline helpers
   to access our variable size structures
 - xfs_dir2_priv.h for all prototypes that are internal to the dir2 code
   and not needed by anything outside of the directory code.  For this
   purpose xfs_da_btree.c, and phase6.c in xfs_repair are considered part
   of the directory code.
 - xfs_dir2.h for the public interface to the directory code

In addition to the reshuffle I have also update the comments to not only
match the new file structure, but also to describe the directory format
better.

Signed-off-by: Christoph Hellwig &lt;hch@lst.de&gt;
Reviewed-by: Alex Elder &lt;aelder@sgi.com&gt;
Reviewed-by: Dave Chinner &lt;dchinner@redhat.com&gt;
</content>
</entry>
<entry>
<title>xfs: byteswap constants instead of variables</title>
<updated>2011-07-08T12:36:05Z</updated>
<author>
<name>Christoph Hellwig</name>
</author>
<published>2011-07-08T12:36:05Z</published>
<link rel='alternate' type='text/html' href='https://git.0xinfinity.dev/distro/kernel.git/commit/?id=69ef921b55cc3788d1d2a27b33b27d04acd0090a'/>
<id>urn:sha1:69ef921b55cc3788d1d2a27b33b27d04acd0090a</id>
<content type='text'>
Micro-optimize various comparisms by always byteswapping the constant
instead of the variable, which allows to do the swap at compile instead
of runtime.

Signed-off-by: Christoph Hellwig &lt;hch@lst.de&gt;
Reviewed-by: Alex Elder &lt;aelder@sgi.com&gt;
Reviewed-by: Dave Chinner &lt;dchinner@redhat.com&gt;
</content>
</entry>
<entry>
<title>xfs: kill struct xfs_dir2_data</title>
<updated>2011-07-08T12:35:42Z</updated>
<author>
<name>Christoph Hellwig</name>
</author>
<published>2011-07-08T12:35:42Z</published>
<link rel='alternate' type='text/html' href='https://git.0xinfinity.dev/distro/kernel.git/commit/?id=0ba9cd84ef2af58645333a86f9c901684ab1fef6'/>
<id>urn:sha1:0ba9cd84ef2af58645333a86f9c901684ab1fef6</id>
<content type='text'>
Remove the confusing xfs_dir2_data structure.  It is supposed to describe
an XFS dir2 data btree block, but due to the variable sized nature of
almost all elements in it it can't actuall do anything close to that
job.  In addition to accessing the fixed offset header structure it was
only used to get a pointer to the first dir or unused entry after it,
which can be trivially replaced by pointer arithmetics on the header
pointer.  For most users that is actually more natural anyway, as they
don't use a typed pointer but rather a character pointer for further
arithmetics.

Signed-off-by: Christoph Hellwig &lt;hch@lst.de&gt;
Reviewed-by: Alex Elder &lt;aelder@sgi.com&gt;
Reviewed-by: Dave Chinner &lt;dchinner@redhat.com&gt;
</content>
</entry>
<entry>
<title>xfs: avoid usage of struct xfs_dir2_data</title>
<updated>2011-07-08T12:35:38Z</updated>
<author>
<name>Christoph Hellwig</name>
</author>
<published>2011-07-08T12:35:38Z</published>
<link rel='alternate' type='text/html' href='https://git.0xinfinity.dev/distro/kernel.git/commit/?id=c2066e2662070e794f57a96a129c42575e77cfcb'/>
<id>urn:sha1:c2066e2662070e794f57a96a129c42575e77cfcb</id>
<content type='text'>
In most places we can simply pass around and use the struct xfs_dir2_data_hdr,
which is the first and most important member of struct xfs_dir2_data instead
of the full structure.

Signed-off-by: Christoph Hellwig &lt;hch@lst.de&gt;
Reviewed-by: Alex Elder &lt;aelder@sgi.com&gt;
Reviewed-by: Dave Chinner &lt;dchinner@redhat.com&gt;
</content>
</entry>
<entry>
<title>xfs: avoid usage of struct xfs_dir2_block</title>
<updated>2011-07-08T12:35:27Z</updated>
<author>
<name>Christoph Hellwig</name>
</author>
<published>2011-07-08T12:35:27Z</published>
<link rel='alternate' type='text/html' href='https://git.0xinfinity.dev/distro/kernel.git/commit/?id=4f6ae1a49ed5c81501d6f7385416bb4e07289e99'/>
<id>urn:sha1:4f6ae1a49ed5c81501d6f7385416bb4e07289e99</id>
<content type='text'>
In most places we can simply pass around and use the struct xfs_dir2_data_hdr,
which is the first and most important member of struct xfs_dir2_block instead
of the full structure.

Signed-off-by: Christoph Hellwig &lt;hch@lst.de&gt;
Reviewed-by: Alex Elder &lt;aelder@sgi.com&gt;
Reviewed-by: Dave Chinner &lt;dchinner@redhat.com&gt;
</content>
</entry>
<entry>
<title>xfs: remove unneeded #include statements</title>
<updated>2010-07-26T18:16:33Z</updated>
<author>
<name>Christoph Hellwig</name>
</author>
<published>2010-06-23T08:11:15Z</published>
<link rel='alternate' type='text/html' href='https://git.0xinfinity.dev/distro/kernel.git/commit/?id=3400777ff03a3cd4fdbc6cb15676fc7e7ceefc00'/>
<id>urn:sha1:3400777ff03a3cd4fdbc6cb15676fc7e7ceefc00</id>
<content type='text'>
Signed-off-by: Christoph Hellwig &lt;hch@lst.de&gt;
Reviewed-by: Dave Chinner &lt;david@fromorbit.com&gt;

</content>
</entry>
<entry>
<title>xfs: drop dmapi hooks</title>
<updated>2010-07-26T18:16:33Z</updated>
<author>
<name>Christoph Hellwig</name>
</author>
<published>2010-06-23T08:11:15Z</published>
<link rel='alternate' type='text/html' href='https://git.0xinfinity.dev/distro/kernel.git/commit/?id=288699fecaffa1ef8f75f92020cbb593a772e487'/>
<id>urn:sha1:288699fecaffa1ef8f75f92020cbb593a772e487</id>
<content type='text'>
Dmapi support was never merged upstream, but we still have a lot of hooks
bloating XFS for it, all over the fast pathes of the filesystem.

This patch drops over 700 lines of dmapi overhead.  If we'll ever get HSM
support in mainline at least the namespace events can be done much saner
in the VFS instead of the individual filesystem, so it's not like this
is much help for future work.

Signed-off-by: Christoph Hellwig &lt;hch@lst.de&gt;
Reviewed-by: Dave Chinner &lt;dchinner@redhat.com&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: 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>
</feed>
