|
@@ -3549,7 +3549,8 @@ again:
|
|
|
}
|
|
|
|
|
|
clear_extent_bit(&BTRFS_I(inode)->io_tree, page_start, page_end,
|
|
|
- EXTENT_DIRTY | EXTENT_DELALLOC | EXTENT_DO_ACCOUNTING,
|
|
|
+ EXTENT_DIRTY | EXTENT_DELALLOC |
|
|
|
+ EXTENT_DO_ACCOUNTING | EXTENT_DEFRAG,
|
|
|
0, 0, &cached_state, GFP_NOFS);
|
|
|
|
|
|
ret = btrfs_set_extent_delalloc(inode, page_start, page_end,
|
|
@@ -6061,7 +6062,8 @@ unlock:
|
|
|
if (lockstart < lockend) {
|
|
|
if (create && len < lockend - lockstart) {
|
|
|
clear_extent_bit(&BTRFS_I(inode)->io_tree, lockstart,
|
|
|
- lockstart + len - 1, unlock_bits, 1, 0,
|
|
|
+ lockstart + len - 1,
|
|
|
+ unlock_bits | EXTENT_DEFRAG, 1, 0,
|
|
|
&cached_state, GFP_NOFS);
|
|
|
/*
|
|
|
* Beside unlock, we also need to cleanup reserved space
|
|
@@ -6069,8 +6071,8 @@ unlock:
|
|
|
*/
|
|
|
clear_extent_bit(&BTRFS_I(inode)->io_tree,
|
|
|
lockstart + len, lockend,
|
|
|
- unlock_bits | EXTENT_DO_ACCOUNTING,
|
|
|
- 1, 0, NULL, GFP_NOFS);
|
|
|
+ unlock_bits | EXTENT_DO_ACCOUNTING |
|
|
|
+ EXTENT_DEFRAG, 1, 0, NULL, GFP_NOFS);
|
|
|
} else {
|
|
|
clear_extent_bit(&BTRFS_I(inode)->io_tree, lockstart,
|
|
|
lockend, unlock_bits, 1, 0,
|
|
@@ -6635,8 +6637,8 @@ static void btrfs_invalidatepage(struct page *page, unsigned long offset)
|
|
|
*/
|
|
|
clear_extent_bit(tree, page_start, page_end,
|
|
|
EXTENT_DIRTY | EXTENT_DELALLOC |
|
|
|
- EXTENT_LOCKED | EXTENT_DO_ACCOUNTING, 1, 0,
|
|
|
- &cached_state, GFP_NOFS);
|
|
|
+ EXTENT_LOCKED | EXTENT_DO_ACCOUNTING |
|
|
|
+ EXTENT_DEFRAG, 1, 0, &cached_state, GFP_NOFS);
|
|
|
/*
|
|
|
* whoever cleared the private bit is responsible
|
|
|
* for the finish_ordered_io
|
|
@@ -6652,7 +6654,8 @@ static void btrfs_invalidatepage(struct page *page, unsigned long offset)
|
|
|
}
|
|
|
clear_extent_bit(tree, page_start, page_end,
|
|
|
EXTENT_LOCKED | EXTENT_DIRTY | EXTENT_DELALLOC |
|
|
|
- EXTENT_DO_ACCOUNTING, 1, 1, &cached_state, GFP_NOFS);
|
|
|
+ EXTENT_DO_ACCOUNTING | EXTENT_DEFRAG, 1, 1,
|
|
|
+ &cached_state, GFP_NOFS);
|
|
|
__btrfs_releasepage(page, GFP_NOFS);
|
|
|
|
|
|
ClearPageChecked(page);
|
|
@@ -6749,7 +6752,8 @@ again:
|
|
|
* prepare_pages in the normal write path.
|
|
|
*/
|
|
|
clear_extent_bit(&BTRFS_I(inode)->io_tree, page_start, page_end,
|
|
|
- EXTENT_DIRTY | EXTENT_DELALLOC | EXTENT_DO_ACCOUNTING,
|
|
|
+ EXTENT_DIRTY | EXTENT_DELALLOC |
|
|
|
+ EXTENT_DO_ACCOUNTING | EXTENT_DEFRAG,
|
|
|
0, 0, &cached_state, GFP_NOFS);
|
|
|
|
|
|
ret = btrfs_set_extent_delalloc(inode, page_start, page_end,
|