]> git.baikalelectronics.ru Git - kernel.git/commit
Btrfs: fix how we merge extent states and deal with cached states
authorJosef Bacik <josef@redhat.com>
Mon, 20 Jun 2011 18:53:48 +0000 (14:53 -0400)
committerJosef Bacik <josef@redhat.com>
Mon, 11 Jul 2011 14:00:48 +0000 (10:00 -0400)
commitf48e5ff01c073004dfe827ff4ebe78f7c37de467
tree0f7e235f8f51d87928266129392e630524847be5
parent67dba1c7f7f8142dbf047f37cef35c56837253f1
Btrfs: fix how we merge extent states and deal with cached states

First, we can sometimes free the state we're merging, which means anybody who
calls merge_state() may have the state it passed in free'ed.  This is
problematic because we could end up caching the state, which makes caching
useless as the state will no longer be part of the tree.  So instead of free'ing
the state we passed into merge_state(), set it's end to the other->end and free
the other state.  This way we are sure to cache the correct state.  Also because
we can merge states together, instead of only using the cache'd state if it's
start == the start we are looking for, go ahead and use it if the start we are
looking for is within the range of the cached state.  Thanks,

Signed-off-by: Josef Bacik <josef@redhat.com>
fs/btrfs/extent_io.c