Btrfs: make find_first_extent_bit be able to cache any state
authorFilipe Manana <fdmanana@suse.com>
Mon, 13 Oct 2014 11:28:38 +0000 (12:28 +0100)
committerChris Mason <clm@fb.com>
Fri, 21 Nov 2014 01:14:29 +0000 (17:14 -0800)
commite38e2ed701ff5f3d889c8dda5fe863e165e60d61
tree315b8703ca6c3317996de05a55ceb252257cbcff
parent663dfbb07774e0fe1049e8db3054a08500122f18
Btrfs: make find_first_extent_bit be able to cache any state

Right now the only caller of find_first_extent_bit() that is interested
in caching extent states (transaction or log commit), never gets an extent
state cached. This is because find_first_extent_bit() only caches states
that have at least one of the flags EXTENT_IOBITS or EXTENT_BOUNDARY, and
the transaction/log commit caller always passes a tree that doesn't have
ever extent states with any of those flags (they can only have one of the
following flags: EXTENT_DIRTY, EXTENT_NEW or EXTENT_NEED_WAIT).

This change together with the following one in the patch series (titled
"Btrfs: avoid returning -ENOMEM in convert_extent_bit() too early") will
help reduce significantly the chances of calls to convert_extent_bit()
fail with -ENOMEM when called from the transaction/log commit code.

Signed-off-by: Filipe Manana <fdmanana@suse.com>
Signed-off-by: Chris Mason <clm@fb.com>
fs/btrfs/extent_io.c
fs/btrfs/transaction.c