diff --git a/chunk-recover.c b/chunk-recover.c index cf8b3184..1a880038 100644 --- a/chunk-recover.c +++ b/chunk-recover.c @@ -1475,6 +1475,9 @@ open_ctree_with_broken_chunk(struct recover_control *rc) } memcpy(fs_info->fsid, &disk_super->fsid, BTRFS_FSID_SIZE); + fs_info->sectorsize = btrfs_super_sectorsize(disk_super); + fs_info->nodesize = btrfs_super_nodesize(disk_super); + fs_info->stripesize = btrfs_super_stripesize(disk_super); ret = btrfs_check_fs_compatibility(disk_super, OPEN_CTREE_WRITES); if (ret) diff --git a/ctree.h b/ctree.h index c457a8dc..78956a4f 100644 --- a/ctree.h +++ b/ctree.h @@ -1147,6 +1147,10 @@ struct btrfs_fs_info { struct cache_tree *fsck_extent_cache; struct cache_tree *corrupt_blocks; + /* Cached block sizes */ + u32 nodesize; + u32 sectorsize; + u32 stripesize; }; /* diff --git a/disk-io.c b/disk-io.c index 838d5cd4..bfdac5ab 100644 --- a/disk-io.c +++ b/disk-io.c @@ -1327,6 +1327,9 @@ static struct btrfs_fs_info *__open_ctree_fd(int fp, const char *path, } memcpy(fs_info->fsid, &disk_super->fsid, BTRFS_FSID_SIZE); + fs_info->sectorsize = btrfs_super_sectorsize(disk_super); + fs_info->nodesize = btrfs_super_nodesize(disk_super); + fs_info->stripesize = btrfs_super_stripesize(disk_super); ret = btrfs_check_fs_compatibility(fs_info->super_copy, flags); if (ret)