diff --git a/fs/btrfs/inode.c b/fs/btrfs/inode.c
index 5a38443a24ee281bf7b65dd0925f1d1887333b65..de17c61dfa0a92bdf250fa7bde7b81eb79ef44ac 100644
--- a/fs/btrfs/inode.c
+++ b/fs/btrfs/inode.c
@@ -823,6 +823,8 @@ static int btrfs_truncate_in_trans(struct btrfs_trans_handle *trans,
 					btrfs_file_extent_num_bytes(leaf, fi);
 				extent_num_bytes = inode->i_size -
 					found_key.offset + root->sectorsize - 1;
+				extent_num_bytes = extent_num_bytes &
+					~((u64)root->sectorsize - 1);
 				btrfs_set_file_extent_num_bytes(leaf, fi,
 							 extent_num_bytes);
 				num_dec = (orig_num_bytes -