diff options
Diffstat (limited to 'fs/btrfs/extent_map.c')
| -rw-r--r-- | fs/btrfs/extent_map.c | 14 |
1 files changed, 13 insertions, 1 deletions
diff --git a/fs/btrfs/extent_map.c b/fs/btrfs/extent_map.c index f169d6b11d7f..fdb7a8db3b57 100644 --- a/fs/btrfs/extent_map.c +++ b/fs/btrfs/extent_map.c | |||
| @@ -171,6 +171,10 @@ static int mergable_maps(struct extent_map *prev, struct extent_map *next) | |||
| 171 | if (test_bit(EXTENT_FLAG_COMPRESSED, &prev->flags)) | 171 | if (test_bit(EXTENT_FLAG_COMPRESSED, &prev->flags)) |
| 172 | return 0; | 172 | return 0; |
| 173 | 173 | ||
| 174 | if (test_bit(EXTENT_FLAG_LOGGING, &prev->flags) || | ||
| 175 | test_bit(EXTENT_FLAG_LOGGING, &next->flags)) | ||
| 176 | return 0; | ||
| 177 | |||
| 174 | if (extent_map_end(prev) == next->start && | 178 | if (extent_map_end(prev) == next->start && |
| 175 | prev->flags == next->flags && | 179 | prev->flags == next->flags && |
| 176 | prev->bdev == next->bdev && | 180 | prev->bdev == next->bdev && |
| @@ -255,7 +259,8 @@ int unpin_extent_cache(struct extent_map_tree *tree, u64 start, u64 len, | |||
| 255 | if (!em) | 259 | if (!em) |
| 256 | goto out; | 260 | goto out; |
| 257 | 261 | ||
| 258 | list_move(&em->list, &tree->modified_extents); | 262 | if (!test_bit(EXTENT_FLAG_LOGGING, &em->flags)) |
| 263 | list_move(&em->list, &tree->modified_extents); | ||
| 259 | em->generation = gen; | 264 | em->generation = gen; |
| 260 | clear_bit(EXTENT_FLAG_PINNED, &em->flags); | 265 | clear_bit(EXTENT_FLAG_PINNED, &em->flags); |
| 261 | em->mod_start = em->start; | 266 | em->mod_start = em->start; |
| @@ -280,6 +285,13 @@ out: | |||
| 280 | 285 | ||
| 281 | } | 286 | } |
| 282 | 287 | ||
| 288 | void clear_em_logging(struct extent_map_tree *tree, struct extent_map *em) | ||
| 289 | { | ||
| 290 | clear_bit(EXTENT_FLAG_LOGGING, &em->flags); | ||
| 291 | if (em->in_tree) | ||
| 292 | try_merge_map(tree, em); | ||
| 293 | } | ||
| 294 | |||
| 283 | /** | 295 | /** |
| 284 | * add_extent_mapping - add new extent map to the extent tree | 296 | * add_extent_mapping - add new extent map to the extent tree |
| 285 | * @tree: tree to insert new map in | 297 | * @tree: tree to insert new map in |
