diff options
Diffstat (limited to 'fs/btrfs/inode.c')
-rw-r--r-- | fs/btrfs/inode.c | 6 |
1 files changed, 6 insertions, 0 deletions
diff --git a/fs/btrfs/inode.c b/fs/btrfs/inode.c index 57c3129ee2a2..2ac260d41ccd 100644 --- a/fs/btrfs/inode.c +++ b/fs/btrfs/inode.c | |||
@@ -4674,6 +4674,11 @@ static void evict_inode_truncate_pages(struct inode *inode) | |||
4674 | clear_bit(EXTENT_FLAG_LOGGING, &em->flags); | 4674 | clear_bit(EXTENT_FLAG_LOGGING, &em->flags); |
4675 | remove_extent_mapping(map_tree, em); | 4675 | remove_extent_mapping(map_tree, em); |
4676 | free_extent_map(em); | 4676 | free_extent_map(em); |
4677 | if (need_resched()) { | ||
4678 | write_unlock(&map_tree->lock); | ||
4679 | cond_resched(); | ||
4680 | write_lock(&map_tree->lock); | ||
4681 | } | ||
4677 | } | 4682 | } |
4678 | write_unlock(&map_tree->lock); | 4683 | write_unlock(&map_tree->lock); |
4679 | 4684 | ||
@@ -4696,6 +4701,7 @@ static void evict_inode_truncate_pages(struct inode *inode) | |||
4696 | &cached_state, GFP_NOFS); | 4701 | &cached_state, GFP_NOFS); |
4697 | free_extent_state(state); | 4702 | free_extent_state(state); |
4698 | 4703 | ||
4704 | cond_resched(); | ||
4699 | spin_lock(&io_tree->lock); | 4705 | spin_lock(&io_tree->lock); |
4700 | } | 4706 | } |
4701 | spin_unlock(&io_tree->lock); | 4707 | spin_unlock(&io_tree->lock); |