Changeset b7a4d06 in mainline for uspace/lib/label/src/gpt.c
- Timestamp:
- 2015-07-18T12:55:12Z (10 years ago)
- Branches:
- lfn, master, serial, ticket/834-toolchain-update, topic/msim-upgrade, topic/simplify-dev-export
- Children:
- c43db5f
- Parents:
- 70815a24
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
uspace/lib/label/src/gpt.c
r70815a24 rb7a4d06 150 150 151 151 list_initialize(&label->parts); 152 list_initialize(&label->pri_parts); 153 list_initialize(&label->log_parts); 152 154 153 155 for (j = 0; j < 2; j++) { … … 300 302 label->pri_entries = num_entries; 301 303 label->block_size = bsize; 304 label->ext_part_idx = -1; 302 305 303 306 label->lt.gpt.hdr_ba[0] = gpt_hdr_ba; … … 436 439 437 440 list_initialize(&label->parts); 441 list_initialize(&label->pri_parts); 442 list_initialize(&label->log_parts); 438 443 439 444 label->ops = &gpt_label_ops; … … 444 449 label->pri_entries = num_entries; 445 450 label->block_size = bsize; 451 label->ext_part_idx = -1; 446 452 447 453 label->lt.gpt.hdr_ba[0] = hdr_ba[0]; … … 468 474 part = gpt_part_first(label); 469 475 while (part != NULL) { 470 list_remove(&part->llabel); 476 list_remove(&part->lparts); 477 list_remove(&part->lpri); 471 478 free(part); 472 479 part = gpt_part_first(label); … … 532 539 } 533 540 541 static bool gpt_can_create_pri(label_t *label) 542 { 543 return list_count(&label->parts) < (size_t)label->pri_entries; 544 } 545 534 546 static int gpt_get_info(label_t *label, label_info_t *linfo) 535 547 { … … 537 549 linfo->dcnt = dc_label; 538 550 linfo->ltype = lt_gpt; 551 linfo->flags = 0; 552 if (gpt_can_create_pri(label)) 553 linfo->flags = linfo->flags | lf_can_create_pri; 539 554 linfo->ablock0 = label->ablock0; 540 555 linfo->anblocks = label->anblocks; … … 550 565 return NULL; 551 566 552 return list_get_instance(link, label_part_t, l label);567 return list_get_instance(link, label_part_t, lparts); 553 568 } 554 569 … … 557 572 link_t *link; 558 573 559 link = list_next(&part->l label, &part->label->parts);574 link = list_next(&part->lparts, &part->label->parts); 560 575 if (link == NULL) 561 576 return NULL; 562 577 563 return list_get_instance(link, label_part_t, l label);578 return list_get_instance(link, label_part_t, lparts); 564 579 } 565 580 … … 567 582 { 568 583 pinfo->index = part->index; 584 pinfo->pkind = lpk_primary; 569 585 pinfo->block0 = part->block0; 570 586 pinfo->nblocks = part->nblocks; … … 587 603 588 604 if (pspec->index < 1 || pspec->index > label->pri_entries) { 605 rc = EINVAL; 606 goto error; 607 } 608 609 /* GPT only has primary partitions */ 610 if (pspec->pkind != lpk_primary) { 589 611 rc = EINVAL; 590 612 goto error; … … 614 636 } 615 637 616 list_append(&part->llabel, &label->parts); 638 list_append(&part->lparts, &label->parts); 639 list_append(&part->lpri, &label->pri_parts); 617 640 618 641 *rpart = part; … … 636 659 return EIO; 637 660 638 list_remove(&part->llabel); 661 list_remove(&part->lparts); 662 list_remove(&part->lpri); 639 663 free(part); 640 664 return EOK; … … 694 718 695 719 part->label = label; 696 list_append(&part->llabel, &label->parts); 720 list_append(&part->lparts, &label->parts); 721 list_append(&part->lpri, &label->pri_parts); 697 722 return EOK; 698 723 }
Note:
See TracChangeset
for help on using the changeset viewer.