<feed xmlns='http://www.w3.org/2005/Atom'>
<title>kernel.git/fs/xfs/xfs_rtalloc.c, branch linux-3.11.y</title>
<subtitle>Hosts the 0x221E linux distro kernel.
</subtitle>
<id>https://git.0xinfinity.dev/distro/kernel.git/atom?h=linux-3.11.y</id>
<link rel='self' href='https://git.0xinfinity.dev/distro/kernel.git/atom?h=linux-3.11.y'/>
<link rel='alternate' type='text/html' href='https://git.0xinfinity.dev/distro/kernel.git/'/>
<updated>2012-11-16T03:34:05Z</updated>
<entry>
<title>xfs: uncached buffer reads need to return an error</title>
<updated>2012-11-16T03:34:05Z</updated>
<author>
<name>Dave Chinner</name>
</author>
<published>2012-11-12T11:54:02Z</published>
<link rel='alternate' type='text/html' href='https://git.0xinfinity.dev/distro/kernel.git/commit/?id=eab4e63368b4cfa597dbdac66d1a7a836a693b7d'/>
<id>urn:sha1:eab4e63368b4cfa597dbdac66d1a7a836a693b7d</id>
<content type='text'>
With verification being done as an IO completion callback, different
errors can be returned from a read. Uncached reads only return a
buffer or NULL on failure, which means the verification error cannot
be returned to the caller.

Split the error handling for these reads into two - a failure to get
a buffer will still return NULL, but a read error will return a
referenced buffer with b_error set rather than NULL. The caller is
responsible for checking the error state of the buffer returned.

Signed-off-by: Dave Chinner &lt;dchinner@redhat.com&gt;
Reviewed-by: Christoph Hellwig &lt;hch@lst.de&gt;
Reviewed-by: Phil White &lt;pwhite@sgi.com&gt;
Signed-off-by: Ben Myers &lt;bpm@sgi.com&gt;
</content>
</entry>
<entry>
<title>xfs: make buffer read verication an IO completion function</title>
<updated>2012-11-16T03:34:02Z</updated>
<author>
<name>Dave Chinner</name>
</author>
<published>2012-11-12T11:54:01Z</published>
<link rel='alternate' type='text/html' href='https://git.0xinfinity.dev/distro/kernel.git/commit/?id=c3f8fc73ac97b76a12692088ef9cace9af8422c0'/>
<id>urn:sha1:c3f8fc73ac97b76a12692088ef9cace9af8422c0</id>
<content type='text'>
Add a verifier function callback capability to the buffer read
interfaces.  This will be used by the callers to supply a function
that verifies the contents of the buffer when it is read from disk.
This patch does not provide callback functions, but simply modifies
the interfaces to allow them to be called.

The reason for adding this to the read interfaces is that it is very
difficult to tell fom the outside is a buffer was just read from
disk or whether we just pulled it out of cache. Supplying a callbck
allows the buffer cache to use it's internal knowledge of the buffer
to execute it only when the buffer is read from disk.

It is intended that the verifier functions will mark the buffer with
an EFSCORRUPTED error when verification fails. This allows the
reading context to distinguish a verification error from an IO
error, and potentially take further actions on the buffer (e.g.
attempt repair) based on the error reported.

Signed-off-by: Dave Chinner &lt;dchinner@redhat.com&gt;
Reviewed-by: Christoph Hellwig &lt;hch@lst.de&gt;
Reviewed-by: Phil White &lt;pwhite@sgi.com&gt;
Signed-off-by: Ben Myers &lt;bpm@sgi.com&gt;
</content>
</entry>
<entry>
<title>xfs: remove xfs_iget.c</title>
<updated>2012-10-17T18:42:25Z</updated>
<author>
<name>Dave Chinner</name>
</author>
<published>2012-10-08T10:56:11Z</published>
<link rel='alternate' type='text/html' href='https://git.0xinfinity.dev/distro/kernel.git/commit/?id=33479e0542df066fb0b47df18780e93bfe6e0dc5'/>
<id>urn:sha1:33479e0542df066fb0b47df18780e93bfe6e0dc5</id>
<content type='text'>
The inode cache functions remaining in xfs_iget.c can be moved to xfs_icache.c
along with the other inode cache functions. This removes all functionality from
xfs_iget.c, so the file can simply be removed.

This move results in various functions now only having the scope of a single
file (e.g. xfs_inode_free()), so clean up all the definitions and exported
prototypes in xfs_icache.[ch] and xfs_inode.h appropriately.

Signed-off-by: Dave Chinner &lt;dchinner@redhat.com&gt;
Reviewed-by: Christoph Hellwig &lt;hch@lst.de&gt;
Reviewed-by: Mark Tinguely &lt;tinguely@sgi.com&gt;
Signed-off-by: Ben Myers &lt;bpm@sgi.com&gt;

</content>
</entry>
<entry>
<title>xfs: fix uninitialised variable in xfs_rtbuf_get()</title>
<updated>2012-08-23T19:48:16Z</updated>
<author>
<name>Dave Chinner</name>
</author>
<published>2012-07-31T04:55:51Z</published>
<link rel='alternate' type='text/html' href='https://git.0xinfinity.dev/distro/kernel.git/commit/?id=0b9e3f6d84ce619f697bb622d9165cccaa93d67c'/>
<id>urn:sha1:0b9e3f6d84ce619f697bb622d9165cccaa93d67c</id>
<content type='text'>
Results in this assert failure in generic/090:

XFS: Assertion failed: *nmap &gt;= 1, file: fs/xfs/xfs_bmap.c, line: 4363
.....
Call Trace:
 [&lt;ffffffff814680db&gt;] xfs_bmapi_read+0x6b/0x370
 [&lt;ffffffff814b64b2&gt;] xfs_rtbuf_get+0x42/0x130
 [&lt;ffffffff814b6f09&gt;] xfs_rtget_summary+0x89/0x120
 [&lt;ffffffff814b7bfe&gt;] xfs_rtallocate_extent_size+0xce/0x340
 [&lt;ffffffff814b89f0&gt;] xfs_rtallocate_extent+0x240/0x290
 [&lt;ffffffff81462c1a&gt;] xfs_bmap_rtalloc+0x1ba/0x340
 [&lt;ffffffff81463a65&gt;] xfs_bmap_alloc+0x35/0x40
 [&lt;ffffffff8146f111&gt;] xfs_bmapi_allocate+0xf1/0x350
 [&lt;ffffffff8146f9de&gt;] xfs_bmapi_write+0x66e/0xa60
 [&lt;ffffffff8144538a&gt;] xfs_iomap_write_direct+0x22a/0x3f0
 [&lt;ffffffff8143707b&gt;] __xfs_get_blocks+0x38b/0x5d0
 [&lt;ffffffff814372d4&gt;] xfs_get_blocks_direct+0x14/0x20
 [&lt;ffffffff811b0081&gt;] do_blockdev_direct_IO+0xf71/0x1eb0
 [&lt;ffffffff811b1015&gt;] __blockdev_direct_IO+0x55/0x60
 [&lt;ffffffff814355ca&gt;] xfs_vm_direct_IO+0x11a/0x1e0
 [&lt;ffffffff8112d617&gt;] generic_file_direct_write+0xd7/0x1b0
 [&lt;ffffffff8143e16c&gt;] xfs_file_dio_aio_write+0x13c/0x320
 [&lt;ffffffff8143e6f2&gt;] xfs_file_aio_write+0x1c2/0x1d0
 [&lt;ffffffff81174a07&gt;] do_sync_write+0xa7/0xe0
 [&lt;ffffffff81175288&gt;] vfs_write+0xa8/0x160
 [&lt;ffffffff81175702&gt;] sys_pwrite64+0x92/0xb0
 [&lt;ffffffff81b68f69&gt;] system_call_fastpath+0x16/0x1b

Signed-off-by: Dave Chinner &lt;dchinner@redhat.com&gt;
Signed-off-by: Ben Myers &lt;bpm@sgi.com&gt;
</content>
</entry>
<entry>
<title>xfs: move xfs_get_extsz_hint() and kill xfs_rw.h</title>
<updated>2012-05-14T21:20:58Z</updated>
<author>
<name>Dave Chinner</name>
</author>
<published>2012-04-23T05:59:02Z</published>
<link rel='alternate' type='text/html' href='https://git.0xinfinity.dev/distro/kernel.git/commit/?id=2a0ec1d9ed7f3aa7974fccfbb612fadda2e10bad'/>
<id>urn:sha1:2a0ec1d9ed7f3aa7974fccfbb612fadda2e10bad</id>
<content type='text'>
The only thing left in xfs_rw.h is a function prototype for an inode
function.  Move that to xfs_inode.h, and kill xfs_rw.h.

Also move the function implementing the prototype from xfs_rw.c to
xfs_inode.c so we only have one function left in xfs_rw.c

Signed-off-by: Dave Chinner &lt;dchinner@redhat.com&gt;
Reviewed-by: Mark Tinguely &lt;tinguely@sgi.com&gt;
Reviewed-by: Christoph Hellwig &lt;hch@lst.de&gt;
Signed-off-by: Ben Myers &lt;bpm@sgi.com&gt;
</content>
</entry>
<entry>
<title>xfs: move xfsagino_t to xfs_types.h</title>
<updated>2012-05-14T21:20:54Z</updated>
<author>
<name>Dave Chinner</name>
</author>
<published>2012-04-23T05:58:58Z</published>
<link rel='alternate' type='text/html' href='https://git.0xinfinity.dev/distro/kernel.git/commit/?id=60a34607b26b60d6b5c5c928ede7fc84b0f06b85'/>
<id>urn:sha1:60a34607b26b60d6b5c5c928ede7fc84b0f06b85</id>
<content type='text'>
Untangle the header file includes a bit by moving the definition of
xfs_agino_t to xfs_types.h. This removes the dependency that xfs_ag.h has on
xfs_inum.h, meaning we don't need to include xfs_inum.h everywhere we include
xfs_ag.h.

Signed-off-by: Dave Chinner &lt;dchinner@redhat.com&gt;
Reviewed-by: Mark Tinguely &lt;tinguely@sgi.com&gt;
Signed-off-by: Ben Myers &lt;bpm@sgi.com&gt;
</content>
</entry>
<entry>
<title>xfs: clean up buffer get/read call API</title>
<updated>2012-05-14T21:20:45Z</updated>
<author>
<name>Dave Chinner</name>
</author>
<published>2012-04-23T05:58:49Z</published>
<link rel='alternate' type='text/html' href='https://git.0xinfinity.dev/distro/kernel.git/commit/?id=e70b73f84f474cc594a39bd8ff083974e6d69aea'/>
<id>urn:sha1:e70b73f84f474cc594a39bd8ff083974e6d69aea</id>
<content type='text'>
The xfs_buf_get/read API is not consistent in the units it uses, and
does not use appropriate or consistent units/types for the
variables.

Convert the API to use disk addresses and block counts for all
buffer get and read calls. Use consistent naming for all the
functions and their declarations, and convert the internal functions
to use disk addresses and block counts to avoid need to convert them
from one type to another and back again.

Fix all the callers to use disk addresses and block counts. In many
cases, this removes an additional conversion from the function call
as the callers already have a block count.

Signed-off-by: Dave Chinner &lt;dchinner@redhat.com&gt;
Reviewed-by: Christoph Hellwig &lt;hch@lst.de&gt;
Reviewed-by: Mark Tinguely &lt;tinguely@sgi.com&gt;
Signed-off-by: Ben Myers &lt;bpm@sgi.com&gt;
</content>
</entry>
<entry>
<title>xfs: fix deadlock in xfs_rtfree_extent</title>
<updated>2012-03-22T20:31:06Z</updated>
<author>
<name>Kamal Dasu</name>
</author>
<published>2012-02-23T00:41:39Z</published>
<link rel='alternate' type='text/html' href='https://git.0xinfinity.dev/distro/kernel.git/commit/?id=5575acc7807595687288b3bbac15103f2a5462e1'/>
<id>urn:sha1:5575acc7807595687288b3bbac15103f2a5462e1</id>
<content type='text'>
To fix the deadlock caused by repeatedly calling xfs_rtfree_extent

 - removed xfs_ilock() and xfs_trans_ijoin() from xfs_rtfree_extent(),
   instead added asserts that the inode is locked and has an inode_item
   attached to it.
 - in xfs_bunmapi() when dealing with an inode with the rt flag
   call xfs_ilock() and xfs_trans_ijoin() so that the
   reference count is bumped on the inode and attached it to the
   transaction before calling into xfs_bmap_del_extent, similar to
   what we do in xfs_bmap_rtalloc.

Signed-off-by: Kamal Dasu &lt;kdasu.kdev@gmail.com&gt;
Reviewed-by: Christoph Hellwig &lt;hch@infradead.org&gt;
Signed-off-by: Ben Myers &lt;bpm@sgi.com&gt;
</content>
</entry>
<entry>
<title>xfs: simplify xfs_trans_ijoin* again</title>
<updated>2011-10-12T02:15:08Z</updated>
<author>
<name>Christoph Hellwig</name>
</author>
<published>2011-09-19T15:00:54Z</published>
<link rel='alternate' type='text/html' href='https://git.0xinfinity.dev/distro/kernel.git/commit/?id=ddc3415aba1cb2f86d1fcad720cea834ee178f54'/>
<id>urn:sha1:ddc3415aba1cb2f86d1fcad720cea834ee178f54</id>
<content type='text'>
There is no reason to keep a reference to the inode even if we unlock
it during transaction commit because we never drop a reference between
the ijoin and commit.  Also use this fact to merge xfs_trans_ijoin_ref
back into xfs_trans_ijoin - the third argument decides if an unlock
is needed now.

I'm actually starting to wonder if allowing inodes to be unlocked
at transaction commit really is worth the effort.  The only real
benefit is that they can be unlocked earlier when commiting a
synchronous transactions, but that could be solved by doing the
log force manually after the unlock, too.

Signed-off-by: Christoph Hellwig &lt;hch@lst.de&gt;
Signed-off-by: Alex Elder &lt;aelder@sgi.com&gt;


</content>
</entry>
<entry>
<title>xfs: rename xfs_bmapi to xfs_bmapi_write</title>
<updated>2011-10-12T02:15:04Z</updated>
<author>
<name>Dave Chinner</name>
</author>
<published>2011-09-18T20:40:52Z</published>
<link rel='alternate' type='text/html' href='https://git.0xinfinity.dev/distro/kernel.git/commit/?id=c0dc7828af6952643219292be29e482ef74cb261'/>
<id>urn:sha1:c0dc7828af6952643219292be29e482ef74cb261</id>
<content type='text'>
Now that all the read-only users of xfs_bmapi have been converted to
use xfs_bmapi_read(), we can remove all the read-only handling cases
from xfs_bmapi().

Once this is done, rename xfs_bmapi to xfs_bmapi_write to reflect
the fact it is for allocation only. This enables us to kill the
XFS_BMAPI_WRITE flag as well.

Also clean up xfs_bmapi_write to the style used in the newly added
xfs_bmapi_read/delay functions.

Signed-off-by: Dave Chinner &lt;dchinner@redhat.com&gt;
Signed-off-by: Christoph Hellwig &lt;hch@lst.de&gt;
Signed-off-by: Alex Elder &lt;aelder@sgi.com&gt;

</content>
</entry>
</feed>
