aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--fs/btrfs/file.c7
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);