Home | History | Annotate | Download | only in libdiskconfig

Lines Matching refs:dinfo

93 load_partitions(cnode *root, struct disk_info *dinfo)
97 dinfo->num_parts = 0;
99 struct part_info *pinfo = &dinfo->part_lst[dinfo->num_parts];
131 ++dinfo->num_parts;
140 struct disk_info *dinfo;
146 if (!(dinfo = malloc(sizeof(struct disk_info)))) {
150 memset(dinfo, 0, sizeof(struct disk_info));
152 if (!(dinfo->part_lst = malloc(MAX_NUM_PARTS * sizeof(struct part_info)))) {
156 memset(dinfo->part_lst, 0,
175 dinfo->device = strdup(tmp);
182 dinfo->scheme = PART_SCHEME_MBR;
193 dinfo->sect_size = strtol(tmp, NULL, 0);
194 if (!dinfo->sect_size) {
205 if (!(dinfo->skip_lba = strtol(tmp, NULL, 0))) {
215 dinfo->num_lba = strtoul(tmp, NULL, 0);
222 if (load_partitions(partnode, dinfo))
225 return dinfo;
228 if (dinfo->part_lst)
229 free(dinfo->part_lst);
230 if (dinfo->device)
231 free(dinfo->device);
232 free(dinfo);
269 validate(struct disk_info *dinfo)
278 if (!dinfo)
281 if ((fd = open(dinfo->device, O_RDWR)) < 0) {
282 LOGE("Cannot open device '%s' (errno=%d)", dinfo->device, errno);
287 LOGE("Cannot stat file '%s', errno=%d.", dinfo->device, errno);
304 if (!sect_sz || sect_sz != dinfo->sect_size) {
310 if (!dinfo->num_lba) {
316 dinfo->num_lba = (uint32_t)(disk_size / (uint64_t)dinfo->sect_size);
318 disk_size = (uint64_t)dinfo->num_lba * (uint64_t)dinfo->sect_size;
321 if (!dinfo->sect_size) {
325 if (dinfo->num_lba)
326 disk_size = (uint64_t)dinfo->num_lba * (uint64_t)dinfo->sect_size;
328 dinfo->num_lba = (uint32_t)(stat.st_size / dinfo->sect_size);
338 dinfo->device, disk_size, dinfo->num_lba, dinfo->sect_size);
343 total_size = dinfo->skip_lba * dinfo->sect_size;
346 for (cnt = 0; cnt < dinfo->num_parts; ++cnt) {
347 struct part_info *part = &dinfo->part_lst[cnt];
355 if (cnt + 1 != dinfo->num_parts) {
384 validate_and_config(struct disk_info *dinfo, int *fd, struct write_list **lst)
389 if ((*fd = validate(dinfo)) < 0)
392 switch (dinfo->scheme) {
394 *lst = config_mbr(dinfo);
416 process_disk_config(struct disk_info *dinfo)
421 if (validate_and_config(dinfo, &fd, &lst) != 0)
431 apply_disk_config(struct disk_info *dinfo, int test)
437 if (validate_and_config(dinfo, &fd, &wr_lst) != 0) {
457 dump_disk_config(struct disk_info *dinfo)
462 printf("Device: %s\n", dinfo->device);
464 switch (dinfo->scheme) {
477 printf("Sector size: %d\n", dinfo->sect_size);
478 printf("Skip leading LBAs: %u\n", dinfo->skip_lba);
479 printf("Number of LBAs: %u\n", dinfo->num_lba);
482 for (cnt = 0; cnt < dinfo->num_parts; ++cnt) {
483 part = &dinfo->part_lst[cnt];
501 find_part(struct disk_info *dinfo, const char *name)
506 for (cnt = 0; cnt < dinfo->num_parts; ++cnt) {
507 pinfo = &dinfo->part_lst[cnt];
517 find_part_device(struct disk_info *dinfo, const char *name)
519 switch (dinfo->scheme) {
521 return find_mbr_part(dinfo, name);