diff --git a/utils/src/format.h b/utils/src/format.h index fe83a346..685f1d53 100644 --- a/utils/src/format.h +++ b/utils/src/format.h @@ -136,7 +136,7 @@ struct scoutfs_btree_block { struct scoutfs_block_header hdr; __le16 free_end; __le16 free_reclaim; - __u8 nr_items; + __le16 nr_items; __le16 item_offs[0]; } __packed; diff --git a/utils/src/mkfs.c b/utils/src/mkfs.c index ac49cb74..c671d08d 100644 --- a/utils/src/mkfs.c +++ b/utils/src/mkfs.c @@ -360,7 +360,7 @@ static int write_new_fs(char *path, int fd) /* write a btree leaf root inode item */ memset(buf, 0, SCOUTFS_BLOCK_SIZE); bt = buf; - bt->nr_items = 1; + bt->nr_items = cpu_to_le16(1); bt->free_end = cpu_to_le16(SCOUTFS_BLOCK_SIZE - sizeof(*item) - sizeof(*inode)); bt->free_reclaim = 0; diff --git a/utils/src/print.c b/utils/src/print.c index 31ff1447..145d9f36 100644 --- a/utils/src/print.c +++ b/utils/src/print.c @@ -178,6 +178,7 @@ static int print_btree_block(int fd, __le64 blkno, u8 level) struct scoutfs_btree_item *item; struct scoutfs_btree_block *bt; struct scoutfs_block_ref *ref; + unsigned int nr; int ret = 0; int err; int i; @@ -186,14 +187,14 @@ static int print_btree_block(int fd, __le64 blkno, u8 level) if (!bt) return -ENOMEM; + nr = le16_to_cpu(bt->nr_items); + printf("btree blkno %llu\n", le64_to_cpu(blkno)); print_block_header(&bt->hdr); printf(" free_end %u free_reclaim %u nr_items %u\n", - le16_to_cpu(bt->free_end), - le16_to_cpu(bt->free_reclaim), - bt->nr_items); + le16_to_cpu(bt->free_end), le16_to_cpu(bt->free_reclaim), nr); - for (i = 0; i < bt->nr_items; i++) { + for (i = 0; i < nr; i++) { item = (void *)bt + le16_to_cpu(bt->item_offs[i]); printf(" [%u] off %u: key "SKF" seq %llu val_len %u\n", @@ -204,7 +205,7 @@ static int print_btree_block(int fd, __le64 blkno, u8 level) print_btree_val(item, level); } - for (i = 0; level && i < bt->nr_items; i++) { + for (i = 0; level && i < nr; i++) { item = (void *)bt + le16_to_cpu(bt->item_offs[i]); ref = (void *)item->val;