Skip to content

Commit 4bdc558

Browse files
adam900710kdave
authored andcommitted
btrfs: simplify the inline extent map creation
With the tree-checker ensuring all inline file extents starts at file offset 0 and has a length no larger than sectorsize, we can simplify the calculation to assigned those fixes values directly. Reviewed-by: Filipe Manana <fdmanana@suse.com> Signed-off-by: Qu Wenruo <wqu@suse.com> Reviewed-by: David Sterba <dsterba@suse.com> Signed-off-by: David Sterba <dsterba@suse.com>
1 parent 319d91e commit 4bdc558

1 file changed

Lines changed: 10 additions & 10 deletions

File tree

fs/btrfs/file-item.c

Lines changed: 10 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -1279,20 +1279,19 @@ void btrfs_extent_item_to_extent_map(struct btrfs_inode *inode,
12791279
struct extent_buffer *leaf = path->nodes[0];
12801280
const int slot = path->slots[0];
12811281
struct btrfs_key key;
1282-
u64 extent_start, extent_end;
1282+
u64 extent_start;
12831283
u64 bytenr;
12841284
u8 type = btrfs_file_extent_type(leaf, fi);
12851285
int compress_type = btrfs_file_extent_compression(leaf, fi);
12861286

12871287
btrfs_item_key_to_cpu(leaf, &key, slot);
12881288
extent_start = key.offset;
1289-
extent_end = btrfs_file_extent_end(path);
12901289
em->ram_bytes = btrfs_file_extent_ram_bytes(leaf, fi);
12911290
em->generation = btrfs_file_extent_generation(leaf, fi);
12921291
if (type == BTRFS_FILE_EXTENT_REG ||
12931292
type == BTRFS_FILE_EXTENT_PREALLOC) {
12941293
em->start = extent_start;
1295-
em->len = extent_end - extent_start;
1294+
em->len = btrfs_file_extent_end(path) - extent_start;
12961295
em->orig_start = extent_start -
12971296
btrfs_file_extent_offset(leaf, fi);
12981297
em->orig_block_len = btrfs_file_extent_disk_num_bytes(leaf, fi);
@@ -1313,9 +1312,12 @@ void btrfs_extent_item_to_extent_map(struct btrfs_inode *inode,
13131312
em->flags |= EXTENT_FLAG_PREALLOC;
13141313
}
13151314
} else if (type == BTRFS_FILE_EXTENT_INLINE) {
1315+
/* Tree-checker has ensured this. */
1316+
ASSERT(extent_start == 0);
1317+
13161318
em->block_start = EXTENT_MAP_INLINE;
1317-
em->start = extent_start;
1318-
em->len = extent_end - extent_start;
1319+
em->start = 0;
1320+
em->len = fs_info->sectorsize;
13191321
/*
13201322
* Initialize orig_start and block_len with the same values
13211323
* as in inode.c:btrfs_get_extent().
@@ -1348,12 +1350,10 @@ u64 btrfs_file_extent_end(const struct btrfs_path *path)
13481350
ASSERT(key.type == BTRFS_EXTENT_DATA_KEY);
13491351
fi = btrfs_item_ptr(leaf, slot, struct btrfs_file_extent_item);
13501352

1351-
if (btrfs_file_extent_type(leaf, fi) == BTRFS_FILE_EXTENT_INLINE) {
1352-
end = btrfs_file_extent_ram_bytes(leaf, fi);
1353-
end = ALIGN(key.offset + end, leaf->fs_info->sectorsize);
1354-
} else {
1353+
if (btrfs_file_extent_type(leaf, fi) == BTRFS_FILE_EXTENT_INLINE)
1354+
end = leaf->fs_info->sectorsize;
1355+
else
13551356
end = key.offset + btrfs_file_extent_num_bytes(leaf, fi);
1356-
}
13571357

13581358
return end;
13591359
}

0 commit comments

Comments
 (0)