<feed xmlns='http://www.w3.org/2005/Atom'>
<title>kernel.git/fs/btrfs/ctree.c, branch linux-3.4.y</title>
<subtitle>Hosts the 0x221E linux distro kernel.
</subtitle>
<id>https://git.0xinfinity.dev/distro/kernel.git/atom?h=linux-3.4.y</id>
<link rel='self' href='https://git.0xinfinity.dev/distro/kernel.git/atom?h=linux-3.4.y'/>
<link rel='alternate' type='text/html' href='https://git.0xinfinity.dev/distro/kernel.git/'/>
<updated>2012-05-06T11:23:47Z</updated>
<entry>
<title>Btrfs: avoid sleeping in verify_parent_transid while atomic</title>
<updated>2012-05-06T11:23:47Z</updated>
<author>
<name>Chris Mason</name>
</author>
<published>2012-05-06T11:23:47Z</published>
<link rel='alternate' type='text/html' href='https://git.0xinfinity.dev/distro/kernel.git/commit/?id=b9fab919b748c7b39c19ff236ed6c5682c266dde'/>
<id>urn:sha1:b9fab919b748c7b39c19ff236ed6c5682c266dde</id>
<content type='text'>
verify_parent_transid needs to lock the extent range to make
sure no IO is underway, and so it can safely clear the
uptodate bits if our checks fail.

But, a few callers are using it with spinlocks held.  Most
of the time, the generation numbers are going to match, and
we don't want to switch to a blocking lock just for the error
case.  This adds an atomic flag to verify_parent_transid,
and changes it to return EAGAIN if it needs to block to
properly verifiy things.

Signed-off-by: Chris Mason &lt;chris.mason@oracle.com&gt;
</content>
</entry>
<entry>
<title>Btrfs: Add properly locking around add_root_to_dirty_list</title>
<updated>2012-05-04T19:14:11Z</updated>
<author>
<name>Chris Mason</name>
</author>
<published>2012-05-03T16:08:48Z</published>
<link rel='alternate' type='text/html' href='https://git.0xinfinity.dev/distro/kernel.git/commit/?id=e5846fc665d1c3dd32d877febe7402ccd583b8a1'/>
<id>urn:sha1:e5846fc665d1c3dd32d877febe7402ccd583b8a1</id>
<content type='text'>
add_root_to_dirty_list happens once at the very beginning of the
transaction, but it is still racey.

Signed-off-by: Chris Mason &lt;chris.mason@oracle.com&gt;
</content>
</entry>
<entry>
<title>Merge branch 'error-handling' into for-linus</title>
<updated>2012-03-29T00:31:37Z</updated>
<author>
<name>Chris Mason</name>
</author>
<published>2012-03-29T00:31:37Z</published>
<link rel='alternate' type='text/html' href='https://git.0xinfinity.dev/distro/kernel.git/commit/?id=1d4284bd6e8d7dd1d5521a6747bdb6dc1caf0225'/>
<id>urn:sha1:1d4284bd6e8d7dd1d5521a6747bdb6dc1caf0225</id>
<content type='text'>
Conflicts:
	fs/btrfs/ctree.c
	fs/btrfs/disk-io.c
	fs/btrfs/extent-tree.c
	fs/btrfs/extent_io.c
	fs/btrfs/extent_io.h
	fs/btrfs/inode.c
	fs/btrfs/scrub.c

Signed-off-by: Chris Mason &lt;chris.mason@oracle.com&gt;
</content>
</entry>
<entry>
<title>Btrfs: adjust the write_lock_level as we unlock</title>
<updated>2012-03-26T21:04:24Z</updated>
<author>
<name>Chris Mason</name>
</author>
<published>2012-03-19T19:54:38Z</published>
<link rel='alternate' type='text/html' href='https://git.0xinfinity.dev/distro/kernel.git/commit/?id=f7c79f30cb2d3883488e70cafc9e3a7edd4b9fdb'/>
<id>urn:sha1:f7c79f30cb2d3883488e70cafc9e3a7edd4b9fdb</id>
<content type='text'>
btrfs_search_slot sometimes needs write locks on high levels of
the tree.  It remembers the highest level that needs a write lock
and will use that for all future searches through the tree in a given
call.

But, very often we'll just cow the top level or the level below and we
won't really need write locks on the root again after that.  This patch
changes things to adjust the write lock requirement as it unlocks
levels.

Signed-off-by: Chris Mason &lt;chris.mason@oracle.com&gt;
</content>
</entry>
<entry>
<title>Btrfs: add the ability to cache a pointer into the eb</title>
<updated>2012-03-26T21:04:23Z</updated>
<author>
<name>Chris Mason</name>
</author>
<published>2012-03-03T12:40:03Z</published>
<link rel='alternate' type='text/html' href='https://git.0xinfinity.dev/distro/kernel.git/commit/?id=cfed81a04eb555f5606d1b6a54bdbabab0ee1ac3'/>
<id>urn:sha1:cfed81a04eb555f5606d1b6a54bdbabab0ee1ac3</id>
<content type='text'>
This cuts down on the CPU time used by map_private_extent_buffer

Signed-off-by: Chris Mason &lt;chris.mason@oracle.com&gt;
</content>
</entry>
<entry>
<title>Btrfs: introduce free_extent_buffer_stale</title>
<updated>2012-03-26T20:51:08Z</updated>
<author>
<name>Josef Bacik</name>
</author>
<published>2012-03-09T21:01:49Z</published>
<link rel='alternate' type='text/html' href='https://git.0xinfinity.dev/distro/kernel.git/commit/?id=3083ee2e18b701122a3b841db83448543a87a583'/>
<id>urn:sha1:3083ee2e18b701122a3b841db83448543a87a583</id>
<content type='text'>
Because btrfs cow's we can end up with extent buffers that are no longer
necessary just sitting around in memory.  So instead of evicting these pages, we
could end up evicting things we actually care about.  Thus we have
free_extent_buffer_stale for use when we are freeing tree blocks.  This will
make it so that the ref for the eb being in the radix tree is dropped as soon as
possible and then is freed when the refcount hits 0 instead of waiting to be
released by releasepage.  Thanks,

Signed-off-by: Josef Bacik &lt;josef@redhat.com&gt;
</content>
</entry>
<entry>
<title>btrfs: replace many BUG_ONs with proper error handling</title>
<updated>2012-03-22T10:52:54Z</updated>
<author>
<name>Jeff Mahoney</name>
</author>
<published>2012-03-12T15:03:00Z</published>
<link rel='alternate' type='text/html' href='https://git.0xinfinity.dev/distro/kernel.git/commit/?id=79787eaab46121d4713ed03c8fc63b9ec3eaec76'/>
<id>urn:sha1:79787eaab46121d4713ed03c8fc63b9ec3eaec76</id>
<content type='text'>
 btrfs currently handles most errors with BUG_ON. This patch is a work-in-
 progress but aims to handle most errors other than internal logic
 errors and ENOMEM more gracefully.

 This iteration prevents most crashes but can run into lockups with
 the page lock on occasion when the timing "works out."

Signed-off-by: Jeff Mahoney &lt;jeffm@suse.com&gt;
</content>
</entry>
<entry>
<title>btrfs: Go readonly on tree errors in balance_level</title>
<updated>2012-03-22T00:45:38Z</updated>
<author>
<name>Mark Fasheh</name>
</author>
<published>2011-09-01T18:27:57Z</published>
<link rel='alternate' type='text/html' href='https://git.0xinfinity.dev/distro/kernel.git/commit/?id=305a26af5b2561a66859ef05ed7eb73d3c9f0913'/>
<id>urn:sha1:305a26af5b2561a66859ef05ed7eb73d3c9f0913</id>
<content type='text'>
balace_level() seems to deal with missing tree nodes by BUG_ON(). Instead,
we can easily just set the file system readonly and bubble -EROFS back up
the stack.

Signed-off-by: Mark Fasheh &lt;mfasheh@suse.com&gt;
</content>
</entry>
<entry>
<title>btrfs: Don't BUG_ON errors from update_ref_for_cow()</title>
<updated>2012-03-22T00:45:38Z</updated>
<author>
<name>Mark Fasheh</name>
</author>
<published>2011-08-29T21:30:39Z</published>
<link rel='alternate' type='text/html' href='https://git.0xinfinity.dev/distro/kernel.git/commit/?id=b68dc2a93e794c8507338c91577a277efa4555d5'/>
<id>urn:sha1:b68dc2a93e794c8507338c91577a277efa4555d5</id>
<content type='text'>
__btrfs_cow_block(), the only caller of update_ref_for_cow() will BUG_ON()
any error return.  Instead, we can go read-only fs as update_ref_for_cow()
manipulates disk data in a way which doesn't look like it's easily rolled
back.

Signed-off-by: Mark Fasheh &lt;mfasheh@suse.de&gt;
</content>
</entry>
<entry>
<title>btrfs: Go readonly on bad extent refs in update_ref_for_cow()</title>
<updated>2012-03-22T00:45:37Z</updated>
<author>
<name>Mark Fasheh</name>
</author>
<published>2011-08-29T21:17:04Z</published>
<link rel='alternate' type='text/html' href='https://git.0xinfinity.dev/distro/kernel.git/commit/?id=e5df957328b18baa731307c66cfe8e7a4981df65'/>
<id>urn:sha1:e5df957328b18baa731307c66cfe8e7a4981df65</id>
<content type='text'>
update_ref_for_cow() will BUG_ON() after it's call to
btrfs_lookup_extent_info() if no existing references are found.  Since refs
are computed directly from disk, this should be treated as a corruption
instead of a logic error.

Signed-off-by: Mark Fasheh &lt;mfasheh@suse.de&gt;
</content>
</entry>
</feed>
