Skip to content

Commit 6877057

Browse files
adam900710kdave
authored andcommitted
btrfs-progs: convert: simplify insert_temp_dev_extent()
This function requires parameters @slot and @itemoff to record where the next item should land. But this is overkilled, as after inserting an item, the temporary extent buffer will have its header nritems and the item pointer updated. We can use that header nritems and item pointer to get where the next item should land. This removes the external counter to record @slot and @itemoff. Signed-off-by: Qu Wenruo <wqu@suse.com> Signed-off-by: David Sterba <dsterba@suse.com>
1 parent bc52579 commit 6877057

File tree

1 file changed

+11
-12
lines changed

1 file changed

+11
-12
lines changed

convert/common.c

Lines changed: 11 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -459,37 +459,36 @@ static int setup_temp_chunk_tree(int fd, struct btrfs_mkfs_config *cfg,
459459
}
460460

461461
static void insert_temp_dev_extent(struct extent_buffer *buf,
462-
int *slot, u32 *itemoff, u64 start, u64 len)
462+
struct btrfs_mkfs_config *cfg, u64 start, u64 len)
463463
{
464464
struct btrfs_dev_extent *dev_extent;
465465
struct btrfs_disk_key disk_key;
466+
u32 slot = btrfs_header_nritems(buf);
467+
u32 itemoff = get_item_offset(buf, cfg);
466468

467-
btrfs_set_header_nritems(buf, *slot + 1);
468-
(*itemoff) -= sizeof(*dev_extent);
469+
btrfs_set_header_nritems(buf, slot + 1);
470+
itemoff -= sizeof(*dev_extent);
469471
btrfs_set_disk_key_type(&disk_key, BTRFS_DEV_EXTENT_KEY);
470472
btrfs_set_disk_key_objectid(&disk_key, 1);
471473
btrfs_set_disk_key_offset(&disk_key, start);
472-
btrfs_set_item_key(buf, &disk_key, *slot);
473-
btrfs_set_item_offset(buf, *slot, *itemoff);
474-
btrfs_set_item_size(buf, *slot, sizeof(*dev_extent));
474+
btrfs_set_item_key(buf, &disk_key, slot);
475+
btrfs_set_item_offset(buf, slot, itemoff);
476+
btrfs_set_item_size(buf, slot, sizeof(*dev_extent));
475477

476-
dev_extent = btrfs_item_ptr(buf, *slot, struct btrfs_dev_extent);
478+
dev_extent = btrfs_item_ptr(buf, slot, struct btrfs_dev_extent);
477479
btrfs_set_dev_extent_chunk_objectid(buf, dev_extent,
478480
BTRFS_FIRST_CHUNK_TREE_OBJECTID);
479481
btrfs_set_dev_extent_length(buf, dev_extent, len);
480482
btrfs_set_dev_extent_chunk_offset(buf, dev_extent, start);
481483
btrfs_set_dev_extent_chunk_tree(buf, dev_extent,
482484
BTRFS_CHUNK_TREE_OBJECTID);
483-
(*slot)++;
484485
}
485486

486487
static int setup_temp_dev_tree(int fd, struct btrfs_mkfs_config *cfg,
487488
u64 sys_chunk_start, u64 meta_chunk_start,
488489
u64 dev_bytenr)
489490
{
490491
struct extent_buffer *buf = NULL;
491-
u32 itemoff = cfg->leaf_data_size;
492-
int slot = 0;
493492
int ret;
494493

495494
/* Must ensure SYS chunk starts before META chunk */
@@ -505,9 +504,9 @@ static int setup_temp_dev_tree(int fd, struct btrfs_mkfs_config *cfg,
505504
BTRFS_DEV_TREE_OBJECTID);
506505
if (ret < 0)
507506
goto out;
508-
insert_temp_dev_extent(buf, &slot, &itemoff, sys_chunk_start,
507+
insert_temp_dev_extent(buf, cfg, sys_chunk_start,
509508
BTRFS_MKFS_SYSTEM_GROUP_SIZE);
510-
insert_temp_dev_extent(buf, &slot, &itemoff, meta_chunk_start,
509+
insert_temp_dev_extent(buf, cfg, meta_chunk_start,
511510
BTRFS_CONVERT_META_GROUP_SIZE);
512511
ret = write_temp_extent_buffer(fd, buf, dev_bytenr, cfg);
513512
out:

0 commit comments

Comments
 (0)