Lines Matching refs:drive

68 static int GptSetEntryAttributes(struct drive *drive,
73 entry = GetEntry(&drive->gpt, PRIMARY, index);
100 static int SetEntryAttributes(struct drive *drive,
104 SetRaw(drive, PRIMARY, index, params->raw_value);
107 SetSuccessful(drive, PRIMARY, index, params->successful);
109 SetTries(drive, PRIMARY, index, params->tries);
111 SetPriority(drive, PRIMARY, index, params->priority);
115 if (IsUnused(drive, PRIMARY, index)) {
129 static int CgptCheckAddValidity(struct drive *drive) {
131 if (GPT_SUCCESS != (gpt_retval = GptSanityCheck(&drive->gpt))) {
137 if (((drive->gpt.valid_headers & MASK_BOTH) != MASK_BOTH) ||
138 ((drive->gpt.valid_entries & MASK_BOTH) != MASK_BOTH)) {
147 static int CgptGetUnusedPartition(struct drive *drive, uint32_t *index,
150 uint32_t max_part = GetNumberOfEntries(drive);
161 if (IsUnused(drive, PRIMARY, i)) {
173 struct drive drive;
178 if (CGPT_OK != DriveOpen(params->drive_name, &drive, O_RDWR,
182 if (CgptCheckAddValidity(&drive)) {
187 params->partition >= GetNumberOfEntries(&drive)) {
192 SetEntryAttributes(&drive, params->partition - 1, params);
194 UpdateAllEntries(&drive);
197 return DriveClose(&drive, 1);
200 DriveClose(&drive, 0);
209 struct drive drive;
216 if (CGPT_OK != DriveOpen(params->drive_name, &drive, O_RDWR,
220 if (CgptCheckAddValidity(&drive)) {
224 int max_part = GetNumberOfEntries(&drive);
236 GptEntry *entry = GetEntry(&drive.gpt, PRIMARY, index);
250 GptEntry *entry = GetEntry(&drive.gpt, PRIMARY, index);
257 params->successful = GetSuccessful(&drive, PRIMARY, index);
258 params->tries = GetTries(&drive, PRIMARY, index);
259 params->priority = GetPriority(&drive, PRIMARY, index);
263 DriveClose(&drive, 0);
267 static int GptAdd(struct drive *drive, CgptAddParams *params, uint32_t index) {
271 entry = GetEntry(&drive->gpt, PRIMARY, index);
274 if (SetEntryAttributes(drive, index, params) ||
275 GptSetEntryAttributes(drive, index, params)) {
280 UpdateAllEntries(drive);
282 rv = CheckEntries((GptEntry*)drive->gpt.primary_entries,
283 (GptHeader*)drive->gpt.primary_header);
297 struct drive drive;
303 if (CGPT_OK != DriveOpen(params->drive_name, &drive, O_RDWR,
307 if (CgptCheckAddValidity(&drive)) {
311 if (CgptGetUnusedPartition(&drive, &index, params)) {
315 if (GptAdd(&drive, params, index))
319 return DriveClose(&drive, 1);
322 DriveClose(&drive, 0);