Home | History | Annotate | Download | only in sysinst

Lines Matching defs:wanted

704  * User interface to edit a "wanted" partition layout "pset" as first
882 const struct disk_part_info *info, struct partition_usage_set *wanted,
888 * does this partition match something in the wanted set?
891 if (wanted->infos[i].type != info->nat_type->generic_ptype)
893 if (wanted->infos[i].type == PT_root &&
895 strcmp(info->last_mounted, wanted->infos[i].mount) != 0)
897 if (wanted->infos[i].cur_part_id != NO_PART)
899 wanted->infos[i].cur_part_id = pno;
900 wanted->infos[i].parts = parts;
901 wanted->infos[i].size = info->size;
902 wanted->infos[i].cur_start = info->start;
903 wanted->infos[i].flags &= ~PUIFLAG_EXTEND;
904 if (wanted->infos[i].fs_type != FS_UNUSED &&
905 wanted->infos[i].type != PT_swap &&
908 wanted->infos[i].instflags |= PUIINST_MOUNT;
910 wanted->infos[i].flags |= PUIFLG_IS_OUTER;
912 wanted->infos[i].flags &= ~PUIFLG_IS_OUTER;
918 * otherwise it must be inserted into the wanted set.
926 infos = realloc(wanted->infos, sizeof(*infos)*(wanted->num+1));
929 wanted->infos = infos;
930 infos += wanted->num;
931 wanted->num++;
961 fill_defaults(struct partition_usage_set *wanted, struct disk_partitions *parts,
970 memset(wanted, 0, sizeof(*wanted));
971 wanted->parts = parts;
973 wanted->reserved_space = ptstart - parts->disk_start;
975 wanted->reserved_space +=
978 wanted->num = __arraycount(default_parts_init);
979 wanted->infos = calloc(wanted->num, sizeof(*wanted->infos));
980 if (wanted->infos == NULL) {
985 memcpy(wanted->infos, default_parts_init, sizeof(default_parts_init));
989 for (i = 0; i < wanted->num; i++) {
990 if (wanted->infos[i].type != PT_root ||
991 wanted->infos[i].fs_type != FS_TMPFS)
994 wanted->infos[i].size = -25;
995 wanted->infos[i].def_size = -25;
1002 MD_PART_DEFAULTS(pm, wanted->infos, wanted->num);
1005 for (i = 0; i < wanted->num; i++) {
1006 wanted->infos[i].parts = parts;
1007 wanted->infos[i].cur_part_id = NO_PART;
1008 if (wanted->infos[i].type == PT_undef &&
1009 wanted->infos[i].fs_type != FS_UNUSED) {
1012 wanted->infos[i].fs_type,
1013 wanted->infos[i].fs_version);
1015 wanted->infos[i].type = pt->generic_ptype;
1017 if (wanted->parts->parent != NULL &&
1018 (wanted->infos[i].fs_type == FS_MSDOS ||
1019 wanted->infos[i].fs_type == FS_EX2FS))
1020 wanted->infos[i].flags |=
1024 if (wanted->infos[i].type == PT_swap) {
1026 if (MD_MAY_SWAP_TO(wanted->parts->disk))
1028 wanted->infos[i].size =
1032 if (wanted->infos[i].type == PT_swap && swap > wanted->num)
1035 if (wanted->infos[i].instflags & PUIINST_BOOT)
1038 if (wanted->infos[i].type == PT_root) {
1039 if (strcmp(wanted->infos[i].mount, "/") == 0) {
1042 strcmp(wanted->infos[i].mount, "/usr") == 0) {
1043 if (wanted->infos[i].size > 0)
1048 if (wanted->infos[i].fs_type == FS_UNUSED)
1049 wanted->infos[i].fs_type = FS_BSDFFS;
1050 if (wanted->infos[i].fs_type == FS_BSDFFS) {
1053 if (boot < wanted->num || i != root)
1055 wanted->infos[i].fs_version = 3;
1064 * there (match with wanted) or are there additionally.
1069 size_t num = wanted->num;
1082 wanted, num, true);
1101 wanted, num, false);
1106 if (root < wanted->num && wanted->infos[root].cur_part_id == NO_PART) {
1112 wanted->infos[root].limit = max_root_size;
1117 if (usr < wanted->num) {
1118 if (wanted->infos[usr].cur_part_id == NO_PART) {
1119 wanted->infos[usr].size += xsize;
1120 wanted->infos[usr].def_size += xsize;
1122 } else if (root < wanted->num &&
1123 wanted->infos[root].cur_part_id == NO_PART &&
1124 (wanted->infos[root].limit == 0 ||
1125 (wanted->infos[root].size + xsize) <=
1126 wanted->infos[root].limit)) {
1127 wanted->infos[root].size += xsize;
1130 if (wanted->infos[root].limit > 0 &&
1131 wanted->infos[root].size > wanted->infos[root].limit) {
1132 if (usr < wanted->num) {
1134 daddr_t spill = wanted->infos[root].size -
1135 wanted->infos[root].limit;
1137 wanted->infos[root].size =
1138 wanted->infos[root].limit;
1139 wanted->infos[usr].size = spill;
1141 wanted->infos[root].size =
1142 wanted->infos[root].limit;
1152 free_space = parts->free_space - wanted->reserved_space;
1154 if (root < wanted->num)
1155 required += wanted->infos[root].size;
1156 if (usr < wanted->num)
1157 required += wanted->infos[usr].size;
1158 else if (def_usr < wanted->num)
1159 required += wanted->infos[def_usr].def_size;
1161 for (i = 0; i < wanted->num; i++) {
1164 if (wanted->infos[i].cur_part_id != NO_PART)
1166 if (wanted->infos[i].size == 0)
1168 if (wanted->infos[i].flags
1171 free_space -= wanted->infos[i].size;
1173 if (free_space < 0 && swap < wanted->num &&
1176 daddr_t d = wanted->infos[swap].size;
1181 wanted->infos[swap].size -= inc;
1183 if (root < wanted->num) {
1190 wanted->infos[root].size += dump_space;
1194 if (wanted->infos[root].limit > 0 &&
1195 (wanted->infos[root].cur_start + wanted->infos[root].size >
1196 wanted->infos[root].limit ||
1197 (wanted->infos[root].flags & PUIFLAG_EXTEND &&
1198 (wanted->infos[root].cur_start + wanted->infos[root].size
1199 + free_space > wanted->infos[root].limit)))) {
1200 if (usr >= wanted->num && def_usr < wanted->num) {
1202 wanted->infos[usr].size = wanted->infos[root].size
1203 - wanted->infos[root].limit;
1204 if (wanted->infos[usr].size <= 0)
1205 wanted->infos[usr].size = max(1,
1206 wanted->infos[usr].def_size);
1207 wanted->infos[root].size =
1208 wanted->infos[root].limit;
1209 if (wanted->infos[root].flags & PUIFLAG_EXTEND) {
1210 wanted->infos[root].flags &= ~PUIFLAG_EXTEND;
1211 wanted->infos[usr].flags |= PUIFLAG_EXTEND;
1213 } else if (usr < wanted->num) {
1215 daddr_t spill = wanted->infos[root].size -
1216 wanted->infos[root].limit;
1218 wanted->infos[root].size =
1219 wanted->infos[root].limit;
1220 wanted->infos[usr].size = spill;
1222 wanted
1223 wanted->infos[root].limit;
1226 wanted->infos[root].def_size = wanted->infos[root].size;
1381 struct partition_usage_set *wanted, daddr_t start, daddr_t xsize)
1395 normalize_clones(&wanted->infos, &wanted->num);
1398 infos = calloc(wanted->num, sizeof(*infos));
1404 align = wanted->parts->pscheme->get_part_alignment(wanted->parts);
1411 for (i = 0; i < wanted->num; i++) {
1412 if ((wanted->infos[i].flags & PUIFLAG_EXTEND) &&
1415 if (wanted->infos[i].flags & PUIFLG_JUST_MOUNTPOINT)
1417 nsp = wanted->infos[i].size;
1418 if (wanted->infos[i].cur_part_id != NO_PART) {
1419 ps = wanted->infos[i].flags & PUIFLG_IS_OUTER ?
1423 wanted->infos[i].cur_part_id, &infos[i]);
1424 if (!(wanted->infos[i].flags & PUIFLG_IS_OUTER))
1436 if (exp_ndx < wanted->num) {
1438 wanted->reserved_space;
1439 daddr_t new_size = wanted->infos[exp_ndx].size;
1443 if (wanted->infos[exp_ndx].limit > 0 &&
1444 (new_size + wanted->infos[exp_ndx].cur_start)
1445 > wanted->infos[exp_ndx].limit) {
1446 wanted->infos[exp_ndx].size =
1447 wanted->infos[exp_ndx].limit
1448 - wanted->infos[exp_ndx].cur_start;
1450 wanted->infos[exp_ndx].size = new_size;
1455 * Now it gets tricky: we want the wanted partitions in order
1460 * compared to the wanted list.
1464 for (i = 0; i < wanted->num; i++) {
1465 ps = wanted->infos[i].flags & PUIFLG_IS_OUTER ?
1467 const struct part_usage_info *want = &wanted->infos[i];
1475 if (free_size < wanted->infos[i].size)
1477 if (infos[i].size != wanted->infos[i].size) {
1478 infos[i].size = wanted->infos[i].size;
1493 for (i = 0; i < wanted->num; i++) {
1494 struct part_usage_info *want = &wanted->infos[i];
1539 for (i = 0; i < wanted->num; i++) {
1541 daddr_t limit = wanted->parts->disk_size + wanted->parts->disk_start;
1545 struct part_usage_info *want = &wanted->infos[i];
1559 if (!wanted->parts->pscheme->
1560 adapt_foreign_part_info(wanted->parts,
1565 size_t cnt = wanted->parts->pscheme->get_free_spaces(
1566 wanted->parts, &space, 1, want->size-align, align,
1569 cnt = wanted->parts->pscheme->get_free_spaces(
1570 wanted->parts, &space, 1,
1578 new_part_id = wanted->parts->pscheme->add_partition(
1579 wanted->parts, &infos[i], NULL);
1586 size_t cnt = wanted->parts->pscheme->get_free_spaces(
1587 wanted->parts, &space, 1, want->size-align, align,
1590 cnt = wanted->parts->pscheme->get_free_spaces(
1591 wanted->parts, &space, 1,
1600 wanted->parts->pscheme->get_fs_part_type(
1614 new_part_id = wanted->parts->pscheme->add_partition(
1615 wanted->parts, &infos[i], NULL);
1621 wanted->parts->pscheme->get_part_info(
1622 wanted->parts, new_part_id, &infos[i]);
1631 for (i = 0; i < wanted->num; i++) {
1632 struct part_usage_info *want = &wanted->infos[i];
1647 j < wanted->parts->num_part; j++) {
1650 if (!wanted->parts->pscheme->get_part_info(
1651 wanted->parts, j, &test))
1661 infos[i].nat_type = wanted->parts->pscheme->
1671 if (wanted->parts->pscheme->add_outer_partition
1673 new_part_id = wanted->parts->pscheme->
1675 wanted->parts, &infos[i], NULL);
1677 new_part_id = wanted->parts->pscheme->
1679 wanted->parts, &infos[i], NULL);
1685 wanted->parts->pscheme->get_part_info(
1686 wanted->parts, new_part_id, &infos[i]);
1687 want->parts = wanted->parts;
1699 for (i = 0; i < wanted->num; i++)
1700 wanted->infos[i].cur_part_id = NO_PART;
1709 for (i = 0; i < wanted->num; i++) {
1710 if (wanted->infos[i].cur_part_id != NO_PART)
1712 if (wanted->infos[i].size <= 0)
1715 wanted->infos[i].cur_part_id = pno;
1716 wanted->infos[i].cur_start = infos[i].start;
1717 wanted->infos[i].cur_flags = infos[i].flags;
1724 /* sort, and sync part ids and wanted->infos[] indices */
1725 sort_and_sync_parts(wanted);
1730 daddr_t start, daddr_t size, struct partition_usage_set *wanted)
1740 fill_defaults(wanted, parts, start, size);
1741 apply_settings_to_partitions(parts, wanted, start, size);
1746 daddr_t start, daddr_t size, struct partition_usage_set *wanted)
1750 fill_defaults(wanted, parts, start, size);
1751 ok = get_ptn_sizes(wanted);
1753 apply_settings_to_partitions(parts, wanted, start, size);
1767 struct partition_usage_set wanted;
1856 empty_usage_set_from_parts(&wanted, parts);
1863 wanted.cur_free_space = space.size;
1867 &wanted);
1870 &wanted)) {
1871 free_usage_set(&wanted);
1875 usage_set_from_parts(&wanted, parts);
1886 for (size_t i = 0; i < wanted.num; i++) {
1887 if (wanted.infos[i].cur_flags & PTI_INSTALL_TARGET) {
1890 target_start = wanted.infos[i].cur_start;
1896 for (size_t i = 0; i < wanted.num; i++) {
1899 if (wanted.infos[i].type != PT_root ||
1900 strcmp(wanted.infos[i].mount, "/") != 0)
1902 wanted.infos[i].cur_flags |= PTI_INSTALL_TARGET;
1904 if (!wanted.parts->pscheme->get_part_info(wanted.parts,
1905 wanted.infos[i].cur_part_id, &info))
1908 wanted.parts->pscheme->set_part_info(wanted.parts,
1909 wanted.infos[i].cur_part_id, &info, NULL);
1911 target_start = wanted.infos[i].cur_start;
1918 for (part_id i = 0; i < wanted.num; i++) {
1919 if ((wanted.infos[i].cur_flags & PTI_BOOT) != 0 ||
1920 wanted.infos[i].type == PT_EFI_SYSTEM) {
1926 for (part_id i = 0; i < wanted.num; i++) {
1932 if ((wanted.infos[i].type != PT_FAT &&
1933 wanted.infos[i].type != PT_EFI_SYSTEM) ||
1934 wanted.infos[i].fs_type != FS_MSDOS)
1936 daddr_t ps = wanted.infos[i].cur_start;
1937 daddr_t pe = ps + wanted.infos[i].size;
1948 if (wanted.parts->pscheme->get_part_info(wanted.parts,
1949 wanted.infos[boot_part].cur_part_id, &info)) {
1951 wanted.parts->pscheme->set_part_info(wanted.parts,
1952 wanted.infos[boot_part].cur_part_id, &info, NULL);
1954 wanted.infos[boot_part].instflags |= PUIINST_BOOT;
1963 int rv = edit_and_check_label(pm, &wanted, true);
1966 free_usage_set(&wanted);
1970 install->num = wanted.num;
1971 install->infos = wanted.infos;
1972 install->write_back = wanted.write_back;
1973 install->num_write_back = wanted.num_write_back;
1979 /* we moved infos from wanted to install target */
1980 wanted.infos = NULL;
1981 wanted.write_back = NULL;
1982 free_usage_set(&wanted);