diff options
Diffstat (limited to 'fs/btrfs/tree-log.c')
-rw-r--r-- | fs/btrfs/tree-log.c | 5 |
1 files changed, 3 insertions, 2 deletions
diff --git a/fs/btrfs/tree-log.c b/fs/btrfs/tree-log.c index 83186c7e45d4..de8899b04d69 100644 --- a/fs/btrfs/tree-log.c +++ b/fs/btrfs/tree-log.c | |||
@@ -3410,13 +3410,13 @@ static int btrfs_log_changed_extents(struct btrfs_trans_handle *trans, | |||
3410 | em = list_entry(extents.next, struct extent_map, list); | 3410 | em = list_entry(extents.next, struct extent_map, list); |
3411 | 3411 | ||
3412 | list_del_init(&em->list); | 3412 | list_del_init(&em->list); |
3413 | clear_bit(EXTENT_FLAG_LOGGING, &em->flags); | ||
3414 | 3413 | ||
3415 | /* | 3414 | /* |
3416 | * If we had an error we just need to delete everybody from our | 3415 | * If we had an error we just need to delete everybody from our |
3417 | * private list. | 3416 | * private list. |
3418 | */ | 3417 | */ |
3419 | if (ret) { | 3418 | if (ret) { |
3419 | clear_em_logging(tree, em); | ||
3420 | free_extent_map(em); | 3420 | free_extent_map(em); |
3421 | continue; | 3421 | continue; |
3422 | } | 3422 | } |
@@ -3424,8 +3424,9 @@ static int btrfs_log_changed_extents(struct btrfs_trans_handle *trans, | |||
3424 | write_unlock(&tree->lock); | 3424 | write_unlock(&tree->lock); |
3425 | 3425 | ||
3426 | ret = log_one_extent(trans, inode, root, em, path); | 3426 | ret = log_one_extent(trans, inode, root, em, path); |
3427 | free_extent_map(em); | ||
3428 | write_lock(&tree->lock); | 3427 | write_lock(&tree->lock); |
3428 | clear_em_logging(tree, em); | ||
3429 | free_extent_map(em); | ||
3429 | } | 3430 | } |
3430 | WARN_ON(!list_empty(&extents)); | 3431 | WARN_ON(!list_empty(&extents)); |
3431 | write_unlock(&tree->lock); | 3432 | write_unlock(&tree->lock); |