aboutsummaryrefslogtreecommitdiffstats
path: root/fs/btrfs/file.c
diff options
context:
space:
mode:
Diffstat (limited to 'fs/btrfs/file.c')
-rw-r--r--fs/btrfs/file.c21
1 files changed, 15 insertions, 6 deletions
diff --git a/fs/btrfs/file.c b/fs/btrfs/file.c
index 238a8e215eb9..0c8cc35a8b97 100644
--- a/fs/btrfs/file.c
+++ b/fs/btrfs/file.c
@@ -368,8 +368,8 @@ int noinline btrfs_drop_extents(struct btrfs_trans_handle *trans,
368 u64 search_start = start; 368 u64 search_start = start;
369 u64 leaf_start; 369 u64 leaf_start;
370 u64 ram_bytes = 0; 370 u64 ram_bytes = 0;
371 u8 compression = 0; 371 u8 compression;
372 u8 encryption = 0; 372 u8 encryption;
373 u16 other_encoding = 0; 373 u16 other_encoding = 0;
374 u64 root_gen; 374 u64 root_gen;
375 u64 root_owner; 375 u64 root_owner;
@@ -415,6 +415,8 @@ next_slot:
415 leaf_start = 0; 415 leaf_start = 0;
416 root_gen = 0; 416 root_gen = 0;
417 root_owner = 0; 417 root_owner = 0;
418 compression = 0;
419 encryption = 0;
418 extent = NULL; 420 extent = NULL;
419 leaf = path->nodes[0]; 421 leaf = path->nodes[0];
420 slot = path->slots[0]; 422 slot = path->slots[0];
@@ -546,8 +548,12 @@ next_slot:
546 inline_limit - key.offset); 548 inline_limit - key.offset);
547 inode_sub_bytes(inode, extent_end - 549 inode_sub_bytes(inode, extent_end -
548 inline_limit); 550 inline_limit);
549 btrfs_truncate_item(trans, root, path, 551 btrfs_set_file_extent_ram_bytes(leaf, extent,
550 new_size, 1); 552 new_size);
553 if (!compression && !encryption) {
554 btrfs_truncate_item(trans, root, path,
555 new_size, 1);
556 }
551 } 557 }
552 } 558 }
553 /* delete the entire extent */ 559 /* delete the entire extent */
@@ -567,8 +573,11 @@ next_slot:
567 new_size = btrfs_file_extent_calc_inline_size( 573 new_size = btrfs_file_extent_calc_inline_size(
568 extent_end - end); 574 extent_end - end);
569 inode_sub_bytes(inode, end - key.offset); 575 inode_sub_bytes(inode, end - key.offset);
570 ret = btrfs_truncate_item(trans, root, path, 576 btrfs_set_file_extent_ram_bytes(leaf, extent,
571 new_size, 0); 577 new_size);
578 if (!compression && !encryption)
579 ret = btrfs_truncate_item(trans, root, path,
580 new_size, 0);
572 BUG_ON(ret); 581 BUG_ON(ret);
573 } 582 }
574 /* create bookend, splitting the extent in two */ 583 /* create bookend, splitting the extent in two */