Changeset 9c2c7d2 in mainline for uspace/lib/fdisk/src/fdisk.c
- Timestamp:
- 2017-07-06T15:52:15Z (8 years ago)
- Branches:
- lfn, master, serial, ticket/834-toolchain-update, topic/msim-upgrade, topic/simplify-dev-export
- Children:
- 5cd1eb9a
- Parents:
- d858a660
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
uspace/lib/fdisk/src/fdisk.c
rd858a660 r9c2c7d2 731 731 fdisk_part_t **rpart) 732 732 { 733 fdisk_part_t *part ;733 fdisk_part_t *part = NULL; 734 734 vbd_part_spec_t vpspec; 735 vbd_part_id_t partid; 736 int rc; 735 vbd_part_id_t partid = 0; 736 vol_part_info_t vpinfo; 737 char *label; 738 int rc; 739 740 label = str_dup(pspec->label); 741 if (label == NULL) 742 return ENOMEM; 737 743 738 744 rc = fdisk_part_spec_prepare(dev, pspec, &vpspec); 739 if (rc != EOK) 740 return EIO; 745 if (rc != EOK) { 746 rc = EIO; 747 goto error; 748 } 741 749 742 750 rc = vbd_part_create(dev->fdisk->vbd, dev->sid, &vpspec, &partid); 743 if (rc != EOK) 744 return EIO; 751 if (rc != EOK) { 752 rc = EIO; 753 goto error; 754 } 745 755 746 756 rc = fdisk_part_add(dev, partid, &part); 747 757 if (rc != EOK) { 748 /* Try rolling back */ 749 (void) vbd_part_delete(dev->fdisk->vbd, partid); 750 return EIO; 758 rc = EIO; 759 goto error; 751 760 } 752 761 753 762 if (part->svc_id != 0) { 754 rc = vol_part_mkfs(dev->fdisk->vol, part->svc_id, pspec->fstype); 763 rc = vol_part_mkfs(dev->fdisk->vol, part->svc_id, pspec->fstype, 764 pspec->label); 755 765 if (rc != EOK && rc != ENOTSUP) { 756 fdisk_part_remove(part); 757 (void) vbd_part_delete(dev->fdisk->vbd, partid); 758 return EIO; 759 } 760 761 part->pcnt = vpc_fs; 762 part->fstype = pspec->fstype; 766 rc = EIO; 767 goto error; 768 } 769 770 /* Get the real label value */ 771 rc = vol_part_info(dev->fdisk->vol, part->svc_id, &vpinfo); 772 if (rc != EOK) { 773 rc = EIO; 774 goto error; 775 } 776 777 part->pcnt = vpinfo.pcnt; 778 part->fstype = vpinfo.fstype; 779 part->label = str_dup(vpinfo.label); 780 781 if (part->label == NULL) { 782 rc = EIO; 783 goto error; 784 } 763 785 } 764 786 … … 766 788 *rpart = part; 767 789 return EOK; 790 error: 791 /* Try rolling back */ 792 if (part != NULL) 793 fdisk_part_remove(part); 794 if (partid != 0) 795 (void) vbd_part_delete(dev->fdisk->vbd, partid); 796 return rc; 768 797 } 769 798 … … 1194 1223 } 1195 1224 1225 /** Get volume label support. */ 1226 int fdisk_get_vollabel_support(fdisk_dev_t *dev, vol_fstype_t fstype, 1227 vol_label_supp_t *vlsupp) 1228 { 1229 return vol_part_get_lsupp(dev->fdisk->vol, fstype, vlsupp); 1230 } 1231 1196 1232 /** @} 1197 1233 */
Note:
See TracChangeset
for help on using the changeset viewer.