<feed xmlns='http://www.w3.org/2005/Atom'>
<title>linux/fs/xfs/xfs_iget.c, branch v2.6.28</title>
<subtitle>Linux Kernel (branches are rebased on master from time to time)</subtitle>
<id>https://sre.ring0.de/linux/atom?h=v2.6.28</id>
<link rel='self' href='https://sre.ring0.de/linux/atom?h=v2.6.28'/>
<link rel='alternate' type='text/html' href='https://sre.ring0.de/linux/'/>
<updated>2008-08-13T06:41:16Z</updated>
<entry>
<title>[XFS] replace inode flush semaphore with a completion</title>
<updated>2008-08-13T06:41:16Z</updated>
<author>
<name>David Chinner</name>
<email>david@fromorbit.com</email>
</author>
<published>2008-08-13T06:41:16Z</published>
<link rel='alternate' type='text/html' href='https://sre.ring0.de/linux/commit/?id=c63942d3eeffb98219e05d0976862ab9907d297d'/>
<id>urn:sha1:c63942d3eeffb98219e05d0976862ab9907d297d</id>
<content type='text'>
Use the new completion flush code to implement the inode flush lock.
Removes one of the final users of semaphores in the XFS code base.

SGI-PV: 981498

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

Signed-off-by: David Chinner &lt;david@fromorbit.com&gt;
Signed-off-by: Lachlan McIlroy &lt;lachlan@sgi.com&gt;
</content>
</entry>
<entry>
<title>[XFS] sanitize xfs_initialize_vnode</title>
<updated>2008-08-13T06:23:13Z</updated>
<author>
<name>Christoph Hellwig</name>
<email>hch@infradead.org</email>
</author>
<published>2008-08-13T06:23:13Z</published>
<link rel='alternate' type='text/html' href='https://sre.ring0.de/linux/commit/?id=41be8bed1f3168f34386f3a15d63682cfd586b8e'/>
<id>urn:sha1:41be8bed1f3168f34386f3a15d63682cfd586b8e</id>
<content type='text'>
Sanitize setting up the Linux indode.

Setting up the xfs_inode &lt;-&gt; inode link is opencoded in xfs_iget_core now
because that's the only place it needs to be done, xfs_initialize_vnode is
renamed to xfs_setup_inode and loses all superflous paramaters. The check
for I_NEW is removed because it always is true and the di_mode check moves
into xfs_iget_core because it's only needed there.

xfs_set_inodeops and xfs_revalidate_inode are merged into xfs_setup_inode
and the whole things is moved into xfs_iops.c where it belongs.

SGI-PV: 981498

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

Signed-off-by: Christoph Hellwig &lt;hch@infradead.org&gt;
Signed-off-by: Niv Sardi &lt;xaiki@sgi.com&gt;
Signed-off-by: Lachlan McIlroy &lt;lachlan@sgi.com&gt;
</content>
</entry>
<entry>
<title>[XFS] Avoid directly referencing the VFS inode.</title>
<updated>2008-08-13T05:45:15Z</updated>
<author>
<name>David Chinner</name>
<email>david@fromorbit.com</email>
</author>
<published>2008-08-13T05:45:15Z</published>
<link rel='alternate' type='text/html' href='https://sre.ring0.de/linux/commit/?id=016516462575d28fab3354f762cad16c86c09116'/>
<id>urn:sha1:016516462575d28fab3354f762cad16c86c09116</id>
<content type='text'>
In several places we directly convert from the XFS inode
to the linux (VFS) inode by a simple deference of ip-&gt;i_vnode.
We should not do this - a helper function should be used to
extract the VFS inode from the XFS inode.

Introduce the function VFS_I() to extract the VFS inode
from the XFS inode. The name was chosen to match XFS_I() which
is used to extract the XFS inode from the VFS inode.

SGI-PV: 981498

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

Signed-off-by: David Chinner &lt;david@fromorbit.com&gt;
Signed-off-by: Niv Sardi &lt;xaiki@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] shrink mrlock_t</title>
<updated>2008-04-29T05:54:02Z</updated>
<author>
<name>Christoph Hellwig</name>
<email>hch@infradead.org</email>
</author>
<published>2008-04-22T07:34:00Z</published>
<link rel='alternate' type='text/html' href='https://sre.ring0.de/linux/commit/?id=579aa9caf552c639fc78168db4cfe7ffcf00c3b3'/>
<id>urn:sha1:579aa9caf552c639fc78168db4cfe7ffcf00c3b3</id>
<content type='text'>
The writer field is not needed for non_DEBU builds so remove it. While
we're at i also clean up the interface for is locked asserts to go through
and xfs_iget.c helper with an interface like the xfs_ilock routines to
isolated the XFS codebase from mrlock internals. That way we can kill
mrlock_t entirely once rw_semaphores grow an islocked facility. Also
remove unused flags to the ilock family of functions.

SGI-PV: 976035
SGI-Modid: xfs-linux-melb:xfs-kern:30902a

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] Remove the xfs_icluster structure</title>
<updated>2008-04-18T01:37:41Z</updated>
<author>
<name>David Chinner</name>
<email>dgc@sgi.com</email>
</author>
<published>2008-03-06T02:43:49Z</published>
<link rel='alternate' type='text/html' href='https://sre.ring0.de/linux/commit/?id=bad5584332e888ac40ca13584e8c114149ddb01e'/>
<id>urn:sha1:bad5584332e888ac40ca13584e8c114149ddb01e</id>
<content type='text'>
Remove the xfs_icluster structure and replace with a radix tree lookup.

We don't need to keep a list of inodes in each cluster around anymore as
we can look them up quickly when we need to. The only time we need to do
this now is during inode writeback.

Factor the inode cluster writeback code out of xfs_iflush and convert it
to use radix_tree_gang_lookup() instead of walking a list of inodes built
when we first read in the inodes.

This remove 3 pointers from each xfs_inode structure and the xfs_icluster
structure per inode cluster. Hence we reduce the cache footprint of the
xfs_inodes by between 5-10% depending on cluster sparseness.

To be truly efficient we need a radix_tree_gang_lookup_range() call to
stop searching once we are past the end of the cluster instead of trying
to find a full cluster's worth of inodes.

Before (ia64):

$ cat /sys/slab/xfs_inode/object_size 536

After:

$ cat /sys/slab/xfs_inode/object_size 512

SGI-PV: 977460
SGI-Modid: xfs-linux-melb:xfs-kern:30502a

Signed-off-by: David Chinner &lt;dgc@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] fix inode leak in xfs_iget_core()</title>
<updated>2008-03-06T05:38:50Z</updated>
<author>
<name>David Chinner</name>
<email>dgc@sgi.com</email>
</author>
<published>2008-03-06T02:49:43Z</published>
<link rel='alternate' type='text/html' href='https://sre.ring0.de/linux/commit/?id=72772a3b5b158cddcfbbff3ef13b26b03a905158'/>
<id>urn:sha1:72772a3b5b158cddcfbbff3ef13b26b03a905158</id>
<content type='text'>
If the radix_tree_preload() fails, we need to destroy the inode we just
read in before trying again. This could leak xfs_vnode structures when
there is memory pressure. Noticed by Christoph Hellwig.

SGI-PV: 977823
SGI-Modid: xfs-linux-melb:xfs-kern:30606a

Signed-off-by: David Chinner &lt;dgc@sgi.com&gt;
Signed-off-by: Lachlan McIlroy &lt;lachlan@sgi.com&gt;
Signed-off-by: Christoph Hellwig &lt;hch@infradead.org&gt;
</content>
</entry>
<entry>
<title>[XFS] Fix inode allocation latency</title>
<updated>2008-02-07T07:16:07Z</updated>
<author>
<name>David Chinner</name>
<email>dgc@sgi.com</email>
</author>
<published>2007-11-23T05:29:18Z</published>
<link rel='alternate' type='text/html' href='https://sre.ring0.de/linux/commit/?id=5d51eff4538bdfeb9b7a2ec030ee3b0980b067d2'/>
<id>urn:sha1:5d51eff4538bdfeb9b7a2ec030ee3b0980b067d2</id>
<content type='text'>
The log force added in xfs_iget_core() has been a performance issue since
it was introduced for tight loops that allocate then unlink a single file.
under heavy writeback, this can introduce unnecessary latency due tothe
log I/o getting stuck behind bulk data writes.

Fix this latency problem by avoinding the need for the log force by moving
the place we mark linux inode dirty to the transaction commit rather than
on transaction completion.

This also closes a potential hole in the sync code where a linux inode is
not dirty between the time it is modified and the time the log buffer has
been written to disk.

SGI-PV: 972753
SGI-Modid: xfs-linux-melb:xfs-kern:30007a

Signed-off-by: David Chinner &lt;dgc@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] cleanup vnode useage in xfs_iget.c</title>
<updated>2008-02-07T05:55:46Z</updated>
<author>
<name>Christoph Hellwig</name>
<email>hch@infradead.org</email>
</author>
<published>2007-10-11T08:11:03Z</published>
<link rel='alternate' type='text/html' href='https://sre.ring0.de/linux/commit/?id=10090be25c159c02208b7abf89ae90f8105a2423'/>
<id>urn:sha1:10090be25c159c02208b7abf89ae90f8105a2423</id>
<content type='text'>
Get rid of vnode useage in xfs_iget.c and pass Linux inode / xfs_inode
where apropinquate. And kill some useless helpers while we're at it.

SGI-PV: 971186
SGI-Modid: xfs-linux-melb:xfs-kern:29808a

Signed-off-by: Christoph Hellwig &lt;hch@infradead.org&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] kill xfs_iocore_t</title>
<updated>2008-02-07T05:48:58Z</updated>
<author>
<name>Christoph Hellwig</name>
<email>hch@infradead.org</email>
</author>
<published>2007-10-11T07:44:08Z</published>
<link rel='alternate' type='text/html' href='https://sre.ring0.de/linux/commit/?id=613d70436c1aeda6843ca8b70c7fab6d0484a591'/>
<id>urn:sha1:613d70436c1aeda6843ca8b70c7fab6d0484a591</id>
<content type='text'>
xfs_iocore_t is a structure embedded in xfs_inode. Except for one field it
just duplicates fields already in xfs_inode, and there is nothing this
abstraction buys us on XFS/Linux. This patch removes it and shrinks source
and binary size of xfs aswell as shrinking the size of xfs_inode by 60/44
bytes in debug/non-debug builds.

SGI-PV: 970852
SGI-Modid: xfs-linux-melb:xfs-kern:29754a

Signed-off-by: Christoph Hellwig &lt;hch@infradead.org&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] more vnode/inode tracing fixes</title>
<updated>2008-02-07T05:43:54Z</updated>
<author>
<name>Lachlan McIlroy</name>
<email>lachlan@sgi.com</email>
</author>
<published>2007-09-17T03:11:58Z</published>
<link rel='alternate' type='text/html' href='https://sre.ring0.de/linux/commit/?id=15947f2d4f747897f31cfaa36e98a93f80ca3d3f'/>
<id>urn:sha1:15947f2d4f747897f31cfaa36e98a93f80ca3d3f</id>
<content type='text'>
SGI-PV: 970335
SGI-Modid: xfs-linux-melb:xfs-kern:29697a

Signed-off-by: Lachlan McIlroy &lt;lachlan@sgi.com&gt;
Signed-off-by: Eric Sandeen &lt;sandeen@sandeen.net&gt;
Signed-off-by: Tim Shimmin &lt;tes@sgi.com&gt;
</content>
</entry>
</feed>
