diff options
Diffstat (limited to 'fs/btrfs/extent_io.c')
-rw-r--r-- | fs/btrfs/extent_io.c | 6 |
1 files changed, 5 insertions, 1 deletions
diff --git a/fs/btrfs/extent_io.c b/fs/btrfs/extent_io.c index d418164a35f1..7d5e55632809 100644 --- a/fs/btrfs/extent_io.c +++ b/fs/btrfs/extent_io.c | |||
@@ -2136,6 +2136,7 @@ static int __extent_writepage(struct page *page, struct writeback_control *wbc, | |||
2136 | int compressed; | 2136 | int compressed; |
2137 | int write_flags; | 2137 | int write_flags; |
2138 | unsigned long nr_written = 0; | 2138 | unsigned long nr_written = 0; |
2139 | bool fill_delalloc = true; | ||
2139 | 2140 | ||
2140 | if (wbc->sync_mode == WB_SYNC_ALL) | 2141 | if (wbc->sync_mode == WB_SYNC_ALL) |
2141 | write_flags = WRITE_SYNC; | 2142 | write_flags = WRITE_SYNC; |
@@ -2166,10 +2167,13 @@ static int __extent_writepage(struct page *page, struct writeback_control *wbc, | |||
2166 | 2167 | ||
2167 | set_page_extent_mapped(page); | 2168 | set_page_extent_mapped(page); |
2168 | 2169 | ||
2170 | if (!tree->ops || !tree->ops->fill_delalloc) | ||
2171 | fill_delalloc = false; | ||
2172 | |||
2169 | delalloc_start = start; | 2173 | delalloc_start = start; |
2170 | delalloc_end = 0; | 2174 | delalloc_end = 0; |
2171 | page_started = 0; | 2175 | page_started = 0; |
2172 | if (!epd->extent_locked) { | 2176 | if (!epd->extent_locked && fill_delalloc) { |
2173 | u64 delalloc_to_write = 0; | 2177 | u64 delalloc_to_write = 0; |
2174 | /* | 2178 | /* |
2175 | * make sure the wbc mapping index is at least updated | 2179 | * make sure the wbc mapping index is at least updated |