/* 'fs' => we should lookup the syslinux partition number and use it */
if (!strcmp(opt.drivename, "fs")) {
while (!pi_next(iter)) {
- if (iter->start_lba == fs_lba)
+ if (iter->abs_lba == fs_lba)
break;
}
/* broken part structure or other problems */
critm();
goto bail;
}
- lba2chs(&ha->start, &iter->di, iter->start_lba, L2C_CADD);
- lba2chs(&ha->end, &iter->di, iter->start_lba + iter->length - 1, L2C_CADD);
+ lba2chs(&ha->start, &iter->di, iter->abs_lba, L2C_CADD);
+ lba2chs(&ha->end, &iter->di, iter->abs_lba + iter->length - 1, L2C_CADD);
ha->active_flag = 0x80;
ha->ostype = 0xED;
/* All bits set by default */
ha->start_lba = ~0u;
ha->length = ~0u;
/* If these fit the precision, pass them on */
- if (iter->start_lba < ha->start_lba)
- ha->start_lba = iter->start_lba;
+ if (iter->abs_lba < ha->start_lba)
+ ha->start_lba = iter->abs_lba;
if (iter->length < ha->length)
ha->length = iter->length;
/* Next comes the GPT partition record length */
}
memcpy(ha, iter->record, synth_size);
/* make sure these match bios imaginations and are ebr agnostic */
- lba2chs(&ha->start, &iter->di, iter->start_lba, L2C_CADD);
- lba2chs(&ha->end, &iter->di, iter->start_lba + iter->length - 1, L2C_CADD);
- ha->start_lba = iter->start_lba;
+ lba2chs(&ha->start, &iter->di, iter->abs_lba, L2C_CADD);
+ lba2chs(&ha->end, &iter->di, iter->abs_lba + iter->length - 1, L2C_CADD);
+ ha->start_lba = iter->abs_lba;
ha->length = iter->length;
#ifdef DEBUG
error("The sector cannot be loaded at such high address.");
goto bail;
}
- if (!(sdat.data = disk_read_sectors(&iter->di, iter->start_lba, 1))) {
+ if (!(sdat.data = disk_read_sectors(&iter->di, iter->abs_lba, 1))) {
error("Couldn't read the sector.");
goto bail;
}
iter->di.lbacnt, iter->di.cyl * iter->di.head * iter->di.spt,
iter->di.cyl, iter->di.head, iter->di.spt);
dprintf("iter idx: %d\n", iter->index);
- dprintf("iter lba: %"PRIu64"\n", iter->start_lba);
+ dprintf("iter lba: %"PRIu64"\n", iter->abs_lba);
if (opt.hand)
dprintf("hand lba: %u\n",
((struct disk_dos_part_entry *)hdat.data)->start_lba);
/* BPB: hidden sectors 64bit - exFAT only for now */
if (type == bpbEXF)
- *(uint64_t *) ((char *)data->data + 0x40) = iter->start_lba;
+ *(uint64_t *) ((char *)data->data + 0x40) = iter->abs_lba;
/* BPB: hidden sectors 32bit*/
else if (bpbV34 <= type && type <= bpbV70) {
- if (iter->start_lba < ~0u)
- *(uint32_t *) ((char *)data->data + 0x1c) = iter->start_lba;
+ if (iter->abs_lba < ~0u)
+ *(uint32_t *) ((char *)data->data + 0x1c) = iter->abs_lba;
else
/* won't really help much, but ... */
*(uint32_t *) ((char *)data->data + 0x1c) = ~0u;
/* BPB: hidden sectors 16bit*/
} else if (bpbV30 <= type && type <= bpbV32) {
- if (iter->start_lba < 0xFFFF)
- *(uint16_t *) ((char *)data->data + 0x1c) = iter->start_lba;
+ if (iter->abs_lba < 0xFFFF)
+ *(uint16_t *) ((char *)data->data + 0x1c) = iter->abs_lba;
else
/* won't really help much, but ... */
*(uint16_t *) ((char *)data->data + 0x1c) = (uint16_t)~0u;
return 0;
if (memcmp(org, data->data, data->size)) {
- if (disk_write_sectors(&iter->di, iter->start_lba, data->data, 1)) {
+ if (disk_write_sectors(&iter->di, iter->abs_lba, data->data, 1)) {
error("Cannot write the updated sector.");
goto bail;
}
dp = (struct disk_dos_part_entry *)iter->record;
if (!ext) {
/* primary or logical */
- lba = (uint32_t)iter->start_lba;
+ lba = (uint32_t)iter->abs_lba;
} else {
/* extended */
dp += 1;
static int pi_dos_next(struct part_iter *iter)
{
- uint32_t start_lba = 0;
+ uint32_t abs_lba = 0;
struct disk_dos_part_entry *dos_part = NULL;
if (iter->status)
/* look for primary partitions */
if (iter->index0 < 4 &&
- dos_next_mbr(iter, &start_lba, &dos_part) < 0)
+ dos_next_mbr(iter, &abs_lba, &dos_part) < 0)
return iter->status;
/* look for logical partitions */
if (iter->index0 >= 4 &&
- dos_next_ebr(iter, &start_lba, &dos_part) < 0)
+ dos_next_ebr(iter, &abs_lba, &dos_part) < 0)
return iter->status;
/*
iter->index = -1;
else
iter->index = iter->index0 + 1 - iter->dos.logskipcnt;
- iter->start_lba = start_lba;
+ iter->abs_lba = abs_lba;
iter->length = dos_part->length;
iter->record = (char *)dos_part;
}
/* gpt_part is guaranteed to be valid here */
iter->index = iter->index0 + 1;
- iter->start_lba = gpt_part->lba_first;
+ iter->abs_lba = gpt_part->lba_first;
iter->length = gpt_part->lba_last - gpt_part->lba_first + 1;
iter->record = (char *)gpt_part;
memcpy(&iter->gpt.part_guid, &gpt_part->uid, sizeof(struct guid));
const struct itertype *type;
char *data;
char *record;
- uint64_t start_lba;
+ uint64_t abs_lba;
uint64_t length;
int index0; /* including holes, from -1 (disk, then parts from 0) */
int index; /* excluding holes, from 0 (disk, then parts from 1), -1 means hole, if PIF_STEPALL is set */