aboutsummaryrefslogtreecommitdiffstats
path: root/fs/btrfs/tree-log.c
diff options
context:
space:
mode:
Diffstat (limited to 'fs/btrfs/tree-log.c')
-rw-r--r--fs/btrfs/tree-log.c5
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);