Changes in uspace/lib/fdisk/src/fdisk.c [fe8961d:395df52] in mainline
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
uspace/lib/fdisk/src/fdisk.c
rfe8961d r395df52 35 35 36 36 #include <adt/list.h> 37 #include <cap.h>38 37 #include <errno.h> 39 38 #include <fdisk.h> … … 219 218 } 220 219 221 int fdisk_dev_info_capacity(fdisk_dev_info_t *info, cap_spec_t *cap)220 int fdisk_dev_info_capacity(fdisk_dev_info_t *info, fdisk_cap_t *cap) 222 221 { 223 222 vbd_disk_info_t vinfo; … … 228 227 return EIO; 229 228 230 cap_from_blocks(vinfo.nblocks, vinfo.block_size, cap);229 fdisk_cap_from_blocks(vinfo.nblocks, vinfo.block_size, cap); 231 230 return EOK; 232 231 } … … 270 269 part->pcnt = vpinfo.pcnt; 271 270 part->fstype = vpinfo.fstype; 272 part->label = str_dup(vpinfo.label);273 271 } 274 272 … … 295 293 dev->ext_part = part; 296 294 297 cap_from_blocks(part->nblocks, dev->dinfo.block_size,295 fdisk_cap_from_blocks(part->nblocks, dev->dinfo.block_size, 298 296 &part->capacity); 299 297 part->part_id = partid; … … 303 301 return EOK; 304 302 error: 305 if (part != NULL)306 free(part->label);307 303 free(part); 308 304 return rc; … … 319 315 if (link_used(&part->llog_ba)) 320 316 list_remove(&part->llog_ba); 321 322 free(part->label);323 317 free(part); 324 318 } … … 536 530 } 537 531 538 int fdisk_dev_capacity(fdisk_dev_t *dev, cap_spec_t *cap)539 { 540 cap_from_blocks(dev->dinfo.nblocks, dev->dinfo.block_size, cap);532 int fdisk_dev_capacity(fdisk_dev_t *dev, fdisk_cap_t *cap) 533 { 534 fdisk_cap_from_blocks(dev->dinfo.nblocks, dev->dinfo.block_size, cap); 541 535 return EOK; 542 536 } … … 673 667 info->fstype = part->fstype; 674 668 info->pkind = part->pkind; 675 info->label = part->label;676 669 return EOK; 677 670 } 678 671 679 672 /** Get size of largest free block. */ 680 int fdisk_part_get_max_avail(fdisk_dev_t *dev, fdisk_spc_t spc, cap_spec_t *cap)673 int fdisk_part_get_max_avail(fdisk_dev_t *dev, fdisk_spc_t spc, fdisk_cap_t *cap) 681 674 { 682 675 int rc; … … 697 690 } 698 691 699 cap_from_blocks(nb, dev->dinfo.block_size, cap);692 fdisk_cap_from_blocks(nb, dev->dinfo.block_size, cap); 700 693 return EOK; 701 694 } … … 703 696 /** Get total free space capacity. */ 704 697 int fdisk_part_get_tot_avail(fdisk_dev_t *dev, fdisk_spc_t spc, 705 cap_spec_t *cap)698 fdisk_cap_t *cap) 706 699 { 707 700 fdisk_free_range_t fr; … … 725 718 } while (fdisk_free_range_next(&fr)); 726 719 727 cap_from_blocks(totb, dev->dinfo.block_size, cap);720 fdisk_cap_from_blocks(totb, dev->dinfo.block_size, cap); 728 721 return EOK; 729 722 } … … 732 725 fdisk_part_t **rpart) 733 726 { 734 fdisk_part_t *part = NULL;727 fdisk_part_t *part; 735 728 vbd_part_spec_t vpspec; 736 vbd_part_id_t partid = 0; 737 vol_part_info_t vpinfo; 738 const char *label; 739 int rc; 740 741 label = pspec->label != NULL ? pspec->label : ""; 729 vbd_part_id_t partid; 730 int rc; 742 731 743 732 rc = fdisk_part_spec_prepare(dev, pspec, &vpspec); 744 if (rc != EOK) { 745 rc = EIO; 746 goto error; 747 } 733 if (rc != EOK) 734 return EIO; 748 735 749 736 rc = vbd_part_create(dev->fdisk->vbd, dev->sid, &vpspec, &partid); 750 if (rc != EOK) { 751 rc = EIO; 752 goto error; 753 } 737 if (rc != EOK) 738 return EIO; 754 739 755 740 rc = fdisk_part_add(dev, partid, &part); 756 741 if (rc != EOK) { 757 rc = EIO; 758 goto error; 742 /* Try rolling back */ 743 (void) vbd_part_delete(dev->fdisk->vbd, partid); 744 return EIO; 759 745 } 760 746 761 747 if (part->svc_id != 0) { 762 rc = vol_part_mkfs(dev->fdisk->vol, part->svc_id, pspec->fstype, 763 label); 748 rc = vol_part_mkfs(dev->fdisk->vol, part->svc_id, pspec->fstype); 764 749 if (rc != EOK && rc != ENOTSUP) { 765 rc = EIO; 766 goto error; 767 } 768 769 /* Get the real label value */ 770 rc = vol_part_info(dev->fdisk->vol, part->svc_id, &vpinfo); 771 if (rc != EOK) { 772 rc = EIO; 773 goto error; 774 } 775 776 part->pcnt = vpinfo.pcnt; 777 part->fstype = vpinfo.fstype; 778 part->label = str_dup(vpinfo.label); 779 780 if (part->label == NULL) { 781 rc = EIO; 782 goto error; 783 } 750 fdisk_part_remove(part); 751 (void) vbd_part_delete(dev->fdisk->vbd, partid); 752 return EIO; 753 } 754 755 part->pcnt = vpc_fs; 756 part->fstype = pspec->fstype; 784 757 } 785 758 … … 787 760 *rpart = part; 788 761 return EOK; 789 error:790 /* Try rolling back */791 if (part != NULL)792 fdisk_part_remove(part);793 if (partid != 0)794 (void) vbd_part_delete(dev->fdisk->vbd, partid);795 return rc;796 762 } 797 763 … … 996 962 int rc; 997 963 998 rc = cap_to_blocks(&pspec->capacity,cv_nom, dev->dinfo.block_size,964 rc = fdisk_cap_to_blocks(&pspec->capacity, fcv_nom, dev->dinfo.block_size, 999 965 &nom_blocks); 1000 966 if (rc != EOK) 1001 967 return rc; 1002 968 1003 rc = cap_to_blocks(&pspec->capacity,cv_min, dev->dinfo.block_size,969 rc = fdisk_cap_to_blocks(&pspec->capacity, fcv_min, dev->dinfo.block_size, 1004 970 &min_blocks); 1005 971 if (rc != EOK) 1006 972 return rc; 1007 973 1008 rc = cap_to_blocks(&pspec->capacity,cv_max, dev->dinfo.block_size,974 rc = fdisk_cap_to_blocks(&pspec->capacity, fcv_max, dev->dinfo.block_size, 1009 975 &max_blocks); 1010 976 if (rc != EOK) … … 1015 981 max_blocks = fdisk_ba_align_up(dev, max_blocks); 1016 982 1017 pcnt = LPC_LIMIT;983 pcnt = -1; 1018 984 1019 985 switch (pspec->fstype) { … … 1034 1000 } 1035 1001 1036 if (pcnt == LPC_LIMIT)1002 if (pcnt < 0) 1037 1003 return EINVAL; 1038 1004 … … 1222 1188 } 1223 1189 1224 /** Get volume label support. */1225 int fdisk_get_vollabel_support(fdisk_dev_t *dev, vol_fstype_t fstype,1226 vol_label_supp_t *vlsupp)1227 {1228 return vol_part_get_lsupp(dev->fdisk->vol, fstype, vlsupp);1229 }1230 1231 1190 /** @} 1232 1191 */
Note:
See TracChangeset
for help on using the changeset viewer.