Lines Matching defs:parts
69 disklabel_init_default_alignment(struct disklabel_disk_partitions *parts,
73 track = MEG / parts->dp.bytes_per_sector;
79 if (MD_DISKLABEL_SET_ALIGN_PRE(parts->ptn_alignment, track))
83 if (parts->dp.disk_size > HUGE_DISK_SIZE) {
84 parts->ptn_alignment = 2048;
85 } else if (parts->dp.disk_size > TINY_DISK_SIZE ||
86 parts->dp.bytes_per_sector > 512) {
87 parts->ptn_alignment = 64;
89 parts->ptn_alignment = 1;
92 MD_DISKLABEL_SET_ALIGN_POST(parts->ptn_alignment, track);
100 struct disklabel_disk_partitions *parts =
103 assert(parts->l.d_secsize != 0);
104 assert(parts->l.d_nsectors != 0);
105 assert(parts->l.d_ntracks != 0);
106 assert(parts->l.d_ncylinders != 0);
107 assert(parts->l.d_secpercyl != 0);
109 disklabel_init_default_alignment(parts, nhead * nsec);
123 const struct disklabel_disk_partitions *parts =
126 return parts->l.d_secpercyl;
142 struct disklabel_disk_partitions *parts;
149 parts = calloc(1, sizeof(*parts));
150 if (parts == NULL)
153 parts->install_target = -1;
160 parts->l.d_ncylinders = geo.dg_ncylinders;
161 parts->l.d_ntracks = geo.dg_ntracks;
162 parts->l.d_nsectors = geo.dg_nsectors;
163 parts->l.d_secsize = geo.dg_secsize;
164 parts->l.d_secpercyl = geo.dg_nsectors * geo.dg_ntracks;
166 parts->dp.pscheme = &disklabel_parts;
167 parts->dp.disk = strdup(dev);
168 parts->dp.disk_start = start;
169 parts->dp.disk_size = parts->dp.free_space = len;
170 parts->dp.bytes_per_sector = parts->l.d_secsize;
171 disklabel_init_default_alignment(parts, parts->l.d_secpercyl);
172 parts->dp.parent = parent;
174 strncpy(parts->l.d_packname, "fictious", sizeof parts->l.d_packname);
177 if (parts->dp.parent != NULL) {
178 parts->l.d_partitions[RAW_PART-1].p_fstype = FS_UNUSED;
179 parts->l.d_partitions[RAW_PART-1].p_offset = start;
180 parts->l.d_partitions[RAW_PART-1].p_size = len;
181 parts->dp.num_part++;
184 parts->l.d_partitions[RAW_PART].p_fstype = FS_UNUSED;
185 parts->l.d_partitions[RAW_PART].p_offset = 0;
186 parts->l.d_partitions[RAW_PART].p_size = total_size;
187 parts->dp.num_part++;
189 parts->l.d_npartitions = RAW_PART+1;
191 return &parts->dp;
205 struct disklabel_disk_partitions *parts = calloc(1, sizeof(*parts));
206 if (parts == NULL)
208 parts->install_target = -1;
212 free(parts);
222 if (ioctl(fd, DIOCGDINFO, &parts->l) < 0) {
223 free(parts);
228 if (parts->l.d_partitions[RAW_PART-1].p_fstype == FS_UNUSED) {
229 daddr_t dlstart = parts->l.d_partitions[RAW_PART-1].p_offset;
231 parts->l.d_partitions[RAW_PART-1].p_size;
239 free(parts);
248 parts->dp.pscheme = scheme;
249 parts->dp.disk = strdup(disk);
250 parts->dp.disk_start = start;
251 parts->dp.disk_size = parts->dp.free_space = len;
252 parts->l.d_secsize = bps;
253 parts->dp.bytes_per_sector = bps;
254 disklabel_init_default_alignment(parts, parts->l.d_secpercyl);
256 for (int part = 0; part < parts->l.d_npartitions; part++) {
257 if (parts->l.d_partitions[part].p_fstype == FS_UNUSED
258 && parts->l.d_partitions[part].p_size == 0)
261 parts->dp.num_part++;
262 if (parts->l.d_partitions[part].p_fstype == FS_UNUSED)
266 if (parts->l.d_partitions[part].p_fstype == FS_MSDOS)
268 else if (parts->l.d_partitions[part].p_fstype == FS_BSDFFS) {
270 if (parts->install_target < 0)
271 parts->install_target =
272 parts->l.d_partitions[part].p_offset;
277 parts->l.d_partitions[part].p_offset,
280 strlcpy(parts->last_mounted[part], lm,
281 sizeof(parts->last_mounted[part]));
282 if (parts->l.d_partitions[part].p_fstype ==
284 parts->fs_sub_type[part] = fs_sub_type;
286 parts->last_mounted[part]);
290 if (parts->l.d_partitions[part].p_size > parts->dp.free_space)
291 parts->dp.free_space = 0;
293 parts->dp.free_space -=
294 parts->l.d_partitions[part].p_size;
317 have_own_label = !md_disklabel_is_default(&parts->l);
324 if (parts->l.d_npartitions <= RAW_PART ||
325 parts->l.d_partitions[RAW_PART].p_size == 0)
333 for (int part = 0; part < parts->l.d_npartitions; part++) {
334 if (parts->l.d_partitions[part].p_fstype == FS_UNUSED)
337 parts->l.d_partitions[part].p_offset ==
338 parts->l.d_partitions[RAW_PART].p_offset &&
339 parts->l.d_partitions[part].p_size ==
340 parts->l.d_partitions[RAW_PART].p_size)
350 free(parts);
355 return &parts->dp;
379 struct disklabel_disk_partitions *parts =
382 char fname[PATH_MAX], packname[sizeof(parts->l.d_packname)+1],
383 disktype[sizeof(parts->l.d_typename)+1];
385 const char *disk = parts->dp.disk, *s;
390 assert(parts->l.d_secsize != 0);
391 assert(parts->l.d_nsectors != 0);
392 assert(parts->l.d_ntracks != 0);
393 assert(parts->l.d_ncylinders != 0);
394 assert(parts->l.d_secpercyl != 0);
397 strlcpy(packname, parts->l.d_packname, sizeof packname);
402 if (strlen(parts->l.d_typename) == 0) {
403 for (n = 0, d = parts->l.d_typename, s = disk;
404 *s && n < sizeof(parts->l.d_typename); d++, s++, n++) {
413 if (strlen(parts->l.d_typename) == 0)
414 strncpy(parts->l.d_typename, "SCSI",
415 sizeof(parts->l.d_typename));
416 escape_capfile(disktype, parts->l.d_typename,
417 sizeof(parts->l.d_typename));
424 lp = parts->l.d_partitions;
429 parts->l.d_ncylinders, parts->l.d_ntracks, parts->l.d_nsectors);
431 parts->l.d_secpercyl, lp[RAW_PART].p_offset+lp[RAW_PART].p_size);
432 scripting_fprintf(f, "\t:se#%d:\\\n", parts->l.d_secsize);
434 for (i = 0; i < parts->l.d_npartitions; i++) {
447 if (i < parts->l.d_npartitions - 1)
481 struct disklabel_disk_partitions *parts =
483 daddr_t total_size = parts->l.d_partitions[RAW_PART].p_size;
485 memset(&parts->l.d_partitions, 0, sizeof(parts->l.d_partitions));
486 parts->dp.num_part = 0;
489 if (parts->dp.parent != NULL) {
490 parts->l.d_partitions[RAW_PART-1].p_fstype = FS_UNUSED;
491 parts->l.d_partitions[RAW_PART-1].p_offset =
492 parts->dp.disk_start;
493 parts->l.d_partitions[RAW_PART-1].p_size = parts->dp.disk_size;
494 parts->dp.num_part++;
497 parts->l.d_partitions[RAW_PART].p_fstype = FS_UNUSED;
498 parts->l.d_partitions[RAW_PART].p_offset = 0;
499 parts->l.d_partitions[RAW_PART].p_size = total_size;
500 parts->dp.num_part++;
502 parts->l.d_npartitions = RAW_PART+1;
510 struct disklabel_disk_partitions *parts =
515 for (int part = 0; part < parts->l.d_npartitions; part++) {
516 if (parts->l.d_partitions[part].p_fstype == FS_UNUSED
517 && parts->l.d_partitions[part].p_size == 0)
524 parts->dp.parent != NULL)
532 if (parts->install_target ==
533 parts->l.d_partitions[part].p_offset)
534 parts->install_target = -1;
535 parts->dp.free_space +=
536 parts->l.d_partitions[part].p_size;
537 parts->l.d_partitions[part].p_size = 0;
538 parts->l.d_partitions[part].p_offset = 0;
539 parts->l.d_partitions[part].p_fstype = FS_UNUSED;
540 parts->dp.num_part--;
555 struct disklabel_disk_partitions *parts =
558 for (int part = 0; part < parts->l.d_npartitions; part++) {
559 if (parts->l.d_partitions[part].p_fstype == FS_UNUSED
560 && parts->l.d_partitions[part].p_size == 0)
566 daddr_t start = parts->l.d_partitions[part].p_offset;
567 daddr_t end = start + parts->l.d_partitions[part].p_size;
570 if (parts->dp.parent != NULL &&
578 if (start == parts->install_target)
579 parts->install_target = -1;
580 if (parts->dp.num_part > 1)
581 parts->dp.num_part--;
582 parts->dp.free_space +=
583 parts->l.d_partitions[part].p_size;
584 parts->l.d_partitions[part].p_fstype = FS_UNUSED;
585 parts->l.d_partitions[part].p_size = 0;
766 const struct disklabel_disk_partitions *parts =
774 for (int part = 0; part < parts->l.d_npartitions; part++) {
775 if (parts->l.d_partitions[part].p_fstype == FS_UNUSED
776 && parts->l.d_partitions[part].p_size == 0)
781 info->start = parts->l.d_partitions[part].p_offset;
782 info->size = parts->l.d_partitions[part].p_size;
784 parts->l.d_partitions[part].p_fstype, true);
785 if (parts->last_mounted[part][0] != 0)
786 info->last_mounted = parts->last_mounted[part];
787 info->fs_type = parts->l.d_partitions[part].p_fstype;
788 info->fs_sub_type = parts->fs_sub_type[part];
789 info->fs_opt2 = parts->l.d_partitions[part].p_fsize;
791 parts->l.d_partitions[part].p_frag;
792 info->fs_opt3 = parts->fs_opt3[part];
794 parts->l.d_partitions[part].p_fstype == FS_UNUSED)
797 if (info->start == parts->install_target &&
798 parts->l.d_partitions[part].p_fstype != FS_UNUSED)
801 if (part == (RAW_PART-1) && parts->dp.parent != NULL &&
802 parts->l.d_partitions[part].p_fstype == FS_UNUSED)
810 if (ndx > parts->dp.num_part || ndx > id)
821 struct disklabel_disk_partitions *parts =
830 for (int part = 0; part < parts->l.d_npartitions; part++) {
831 if (parts->l.d_partitions[part].p_fstype == FS_UNUSED
832 && parts->l.d_partitions[part].p_size == 0)
836 was_inst_target = parts->l.d_partitions[part].p_offset
837 == parts->install_target;
838 parts->l.d_partitions[part].p_offset = info->start;
842 parts->dp.parent == NULL)
845 parts->dp.free_space +=
846 parts->l.d_partitions[part].p_size -
849 parts->l.d_partitions[part].p_size = info->size;
850 parts->l.d_partitions[part].p_fstype =
852 parts->l.d_partitions[part].p_fsize = info->fs_opt2;
854 parts->l.d_partitions[part].p_frag =
857 parts->l.d_partitions[part].p_frag = 0;
858 parts->fs_opt3[part] = info->fs_opt3;
860 info->last_mounted != parts->last_mounted[part])
861 strlcpy(parts->last_mounted[part],
863 sizeof(parts->last_mounted[part]));
865 parts->install_target = info->start;
867 parts->install_target = -1;
869 parts->l.d_partitions[part].p_fstype);
871 parts->fs_sub_type[part] = info->fs_sub_type;
876 if (ndx > parts->dp.num_part || ndx > id)
885 disklabel_disk_partitions *parts,
892 if (start < parts->dp.disk_start)
893 start = parts->dp.disk_start;
898 end_of_disk = parts->dp.disk_start + parts->dp.disk_size;
902 size = parts->dp.disk_start + parts->dp.disk_size - from;
904 for (i = 0; i < parts->l.d_npartitions; i++) {
907 if (parts->l.d_partitions[i].p_fstype == FS_UNUSED)
909 if (parts->l.d_partitions[i].p_size == 0)
912 s = parts->l.d_partitions[i].p_offset;
913 e = parts->l.d_partitions[i].p_size + s;
953 const struct disklabel_disk_partitions *parts =
960 if (parts->dp.free_space < parts->ptn_alignment)
962 if (parts->dp.num_part >= dl_maxpart)
964 if (disklabel_get_free_spaces_internal(parts, &space, 1,
965 parts->ptn_alignment, parts->ptn_alignment, 0, -1) < 1)
967 if (parts->l.d_npartitions < dl_maxpart)
969 for (i = 0; i < parts->l.d_npartitions; i++) {
973 if (i == RAW_PART-1 && parts->dp.parent != NULL)
976 if (parts->l.d_partitions[i].p_fstype == FS_UNUSED)
986 const struct disklabel_disk_partitions *parts =
989 strlcpy(buf, parts->l.d_packname, min(len,
990 sizeof(parts->l.d_packname)+1));
997 struct disklabel_disk_partitions *parts =
1000 strncpy(parts->l.d_packname, pack, sizeof(parts->l.d_packname));
1009 const struct disklabel_disk_partitions *parts =
1015 if (ptn >= parts->l.d_npartitions)
1018 for (id = part_index = 0; part_index < parts->l.d_npartitions;
1020 if (parts->l.d_partitions[part_index].p_fstype == FS_UNUSED &&
1021 parts->l.d_partitions[part_index].p_size == 0)
1083 struct disklabel_disk_partitions *parts =
1090 if (disklabel_get_free_spaces_internal(parts, &space, 1, 1, 1,
1096 if (space.start <= (parts->dp.disk_start + LABELSECTOR) &&
1098 daddr_t new_start = roundup(parts->dp.disk_start + LABELSECTOR,
1099 parts->ptn_alignment);
1115 for (new_id = 0, i = 0; i < parts->l.d_npartitions; i++) {
1116 if (parts->l.d_partitions[i].p_size > 0)
1128 if (i == RAW_PART-1 && parts->dp.parent != NULL)
1131 if (parts->l.d_partitions[i].p_size > 0)
1134 if (!MD_DISKLABEL_PART_INDEX_CHECK(&parts->l, i, info))
1142 if (parts->l.d_npartitions >= dl_maxpart) {
1149 part = parts->l.d_npartitions++;
1151 parts->l.d_partitions[part].p_offset = data.start;
1152 parts->l.d_partitions[part].p_size = data.size;
1153 parts->l.d_partitions[part].p_fstype =
1155 parts->l.d_partitions[part].p_fsize = info->fs_opt2;
1157 parts->l.d_partitions[part].p_frag =
1160 parts->l.d_partitions[part].p_frag = 0;
1162 strlcpy(parts->last_mounted[part], data.last_mounted,
1163 sizeof(parts->last_mounted[part]));
1165 parts->last_mounted[part][0] = 0;
1166 parts->fs_sub_type[part] = data.fs_sub_type;
1167 parts->dp.num_part++;
1168 if (data.size <= parts->dp.free_space)
1169 parts->dp.free_space -= data.size;
1171 parts->dp.free_space = 0;
1180 struct disklabel_disk_partitions *parts =
1188 for (new_id = 0, i = 0; i < parts->l.d_npartitions; i++) {
1189 if (parts->l.d_partitions[i].p_size > 0)
1201 if (i == RAW_PART-1 && parts->dp.parent != NULL)
1204 if (parts->l.d_partitions[i].p_size > 0)
1211 if (parts->l.d_npartitions >= dl_maxpart) {
1218 part = parts->l.d_npartitions++;
1220 parts->l.d_partitions[part].p_offset = info->start;
1221 parts->l.d_partitions[part].p_size = info->size;
1222 parts->l.d_partitions[part].p_fstype =
1224 parts->l.d_partitions[part].p_fsize = info->fs_opt2;
1226 parts->l.d_partitions[part].p_frag =
1229 parts->l.d_partitions[part].p_frag = 0;
1231 strlcpy(parts->last_mounted[part], info->last_mounted,
1232 sizeof(parts->last_mounted[part]));
1234 parts->last_mounted[part][0] = 0;
1235 parts->fs_sub_type[part] = info->fs_sub_type;
1236 parts->dp.num_part++;
1246 const struct disklabel_disk_partitions *parts =
1249 return disklabel_get_free_spaces_internal(parts, result,
1256 const struct disklabel_disk_partitions *parts =
1260 if (disklabel_get_free_spaces_internal(parts, &space, 1, 1, 0,
1270 const struct disklabel_disk_partitions *parts =
1273 return parts->ptn_alignment;
1279 const struct disklabel_disk_partitions *parts =
1290 if (strncmp(name, parts->l.d_packname, n) != 0)
1296 if (pno >= parts->l.d_npartitions)
1298 if (parts->l.d_partitions[pno].p_fstype == FS_UNUSED)
1301 if (parts->l.d_partitions[i].p_fstype != FS_UNUSED ||
1302 parts->l.d_partitions[i].p_size != 0)