diff options
-rw-r--r-- | fs/btrfs/file.c | 7 |
1 files changed, 5 insertions, 2 deletions
diff --git a/fs/btrfs/file.c b/fs/btrfs/file.c index 72df63b0c799..3dfd8db0e243 100644 --- a/fs/btrfs/file.c +++ b/fs/btrfs/file.c | |||
@@ -1591,9 +1591,10 @@ again: | |||
1591 | unlock_extent_cached(&BTRFS_I(inode)->io_tree, | 1591 | unlock_extent_cached(&BTRFS_I(inode)->io_tree, |
1592 | lockstart, lockend, &cached_state, | 1592 | lockstart, lockend, &cached_state, |
1593 | GFP_NOFS); | 1593 | GFP_NOFS); |
1594 | btrfs_drop_pages(pages, num_pages); | 1594 | if (ret) { |
1595 | if (ret) | 1595 | btrfs_drop_pages(pages, num_pages); |
1596 | break; | 1596 | break; |
1597 | } | ||
1597 | 1598 | ||
1598 | release_bytes = 0; | 1599 | release_bytes = 0; |
1599 | if (only_release_metadata && copied > 0) { | 1600 | if (only_release_metadata && copied > 0) { |
@@ -1607,6 +1608,8 @@ again: | |||
1607 | only_release_metadata = false; | 1608 | only_release_metadata = false; |
1608 | } | 1609 | } |
1609 | 1610 | ||
1611 | btrfs_drop_pages(pages, num_pages); | ||
1612 | |||
1610 | cond_resched(); | 1613 | cond_resched(); |
1611 | 1614 | ||
1612 | balance_dirty_pages_ratelimited(inode->i_mapping); | 1615 | balance_dirty_pages_ratelimited(inode->i_mapping); |