Lines Matching refs:parts

109 static void free_subpart(struct cmdline_parts *parts)
113 while (parts->subpart) {
114 subpart = parts->subpart;
115 parts->subpart = subpart->next_subpart;
120 static int parse_parts(struct cmdline_parts **parts, const char *bdevdef)
129 *parts = NULL;
170 *parts = newparts;
179 static void cmdline_parts_free(struct cmdline_parts **parts)
183 while (*parts) {
184 next_parts = (*parts)->next_parts;
185 free_subpart(*parts);
186 kfree(*parts);
187 *parts = next_parts;
191 static int cmdline_parts_parse(struct cmdline_parts **parts,
200 *parts = NULL;
206 next_parts = parts;
223 if (!*parts) {
235 cmdline_parts_free(parts);
239 static struct cmdline_parts *cmdline_parts_find(struct cmdline_parts *parts,
242 while (parts && strncmp(bdev, parts->name, sizeof(parts->name)))
243 parts = parts->next_parts;
244 return parts;
263 info = &state->parts[slot].info;
272 state->parts[slot].has_info = true;
277 static int cmdline_parts_set(struct cmdline_parts *parts, sector_t disk_size,
284 for (subpart = parts->subpart; subpart;
345 for (; slot < state->limit && state->parts[slot].has_info; slot++) {
346 for (i = slot+1; i < state->limit && state->parts[i].has_info;
348 if (has_overlaps(state->parts[slot].from,
349 state->parts[slot].size,
350 state->parts[i].from,
351 state->parts[i].size)) {
358 state->parts[slot].info.volname,
359 (u64)state->parts[slot].from << 9,
360 (u64)state->parts[slot].size << 9,
361 state->parts[i].info.volname,
362 (u64)state->parts[i].from << 9,
363 (u64)state->parts[i].size << 9);
379 struct cmdline_parts *parts;
395 parts = cmdline_parts_find(bdev_parts, state->disk->disk_name);
396 if (!parts)
401 cmdline_parts_set(parts, disk_size, state);