btrfs: make state preallocation more speculative in __set_extent_bit
Similar to __clear_extent_bit, do not fail if the state preallocation fails as we might not need it. One less BUG_ON. Signed-off-by: David Sterba <dsterba@suse.com>
This commit is contained in:
Родитель
03bf538770
Коммит
059f791c6b
|
@ -873,8 +873,14 @@ __set_extent_bit(struct extent_io_tree *tree, u64 start, u64 end,
|
|||
bits |= EXTENT_FIRST_DELALLOC;
|
||||
again:
|
||||
if (!prealloc && gfpflags_allow_blocking(mask)) {
|
||||
/*
|
||||
* Don't care for allocation failure here because we might end
|
||||
* up not needing the pre-allocated extent state at all, which
|
||||
* is the case if we only have in the tree extent states that
|
||||
* cover our input range and don't cover too any other range.
|
||||
* If we end up needing a new extent state we allocate it later.
|
||||
*/
|
||||
prealloc = alloc_extent_state(mask);
|
||||
BUG_ON(!prealloc);
|
||||
}
|
||||
|
||||
spin_lock(&tree->lock);
|
||||
|
|
Загрузка…
Ссылка в новой задаче