int ext4_mbr_write(struct ext4_blockdev *parent, struct ext4_mbr_parts *parts)
{
int r;
- uint64_t disk_size = parent->part_size;
uint32_t division_sum = parts->division[0] + parts->division[1] +
parts->division[2] + parts->division[3];
if (r != EOK)
return r;
+ /* carl: must be after ext4_block_init or the device isn't yet open */
+ /* disk_size is disk size in bytes */
+ uint64_t const disk_size = parent->part_size;
+
/*Calculate CHS*/
uint32_t k = 16;
while ((k < 256) && ((disk_size / k / 63) > 1024))
if (!cyl_part)
continue;
+ /* Partition start and size in bytes */
uint32_t part_start = cyl_it * cyl_size;
uint32_t part_size = cyl_part * cyl_size;
mbr->part_entry[i].chs2[2] = cyl_end;
mbr->part_entry[i].first_lba = part_start;
- mbr->part_entry[i].sectors = part_size;
+ mbr->part_entry[i].sectors = part_size / parent->bdif->ph_bsize;
cyl_it += cyl_part;
}
/**
* @}
*/
-