diff --git a/fs/btrfs/inode.c b/fs/btrfs/inode.c index f0d6ddd6cc3638d59a34a98b6c170e3b4292da5e..83268d8f48c4d7b9789ed9ec1581b1fe5916fde9 100644 --- a/fs/btrfs/inode.c +++ b/fs/btrfs/inode.c @@ -5283,11 +5283,13 @@ static void evict_inode_truncate_pages(struct inode *inode) struct extent_state *cached_state = NULL; u64 start; u64 end; + unsigned state_flags; node = rb_first(&io_tree->state); state = rb_entry(node, struct extent_state, rb_node); start = state->start; end = state->end; + state_flags = state->state; spin_unlock(&io_tree->lock); lock_extent_bits(io_tree, start, end, &cached_state); @@ -5300,7 +5302,7 @@ static void evict_inode_truncate_pages(struct inode *inode) * * Note, end is the bytenr of last byte, so we need + 1 here. */ - if (state->state & EXTENT_DELALLOC) + if (state_flags & EXTENT_DELALLOC) btrfs_qgroup_free_data(inode, NULL, start, end - start + 1); clear_extent_bit(io_tree, start, end,