Lines Matching defs:disk
46 static struct disk *
50 struct disk *disk;
56 disk = (struct disk *)calloc(sizeof *disk, 1);
57 if (disk == NULL)
60 disk->name = strdup(name);
62 disk->media_size = strtoimax(p, &q, 0);
67 disk->sector_size = strtoul(p, &q, 0);
71 if (disk->sector_size == 0)
72 disk->sector_size = 512;
74 if (disk->media_size % disk->sector_size)
78 * We need to read the disk to get GPT specific information.
85 buffer = malloc(2 * disk->sector_size);
90 if (read(fd, buffer, 2 * disk->sector_size) == -1) {
97 gpt = (struct gpt_hdr *)(buffer + disk->sector_size);
101 * or is a PMBR before declaring this disk as empty. If
103 * disk.
118 disk->gpt_size = 128;
119 disk->lba_start = (disk->gpt_size * sizeof(struct gpt_ent)) /
120 disk->sector_size + 2;
121 disk->lba_end = (disk->media_size / disk->sector_size) -
122 disk->lba_start;
124 disk->lba_start = gpt->hdr_lba_start;
125 disk->lba_end = gpt->hdr_lba_end;
126 disk->gpt_size = gpt->hdr_entries;
129 Add_Chunk(disk, disk->lba_start, disk->lba_end - disk->lba_start + 1,
131 return (disk);
134 free(disk->name);
135 free(disk);
139 struct disk *
143 struct disk *disk;
170 disk = parse_disk(p, name);
171 if (disk == NULL)
199 chunk.end = i / disk->sector_size;
227 chunk.offset = i / disk->sector_size;
234 Add_Chunk(disk, chunk.offset, chunk.end, chunk.name,
238 return (disk);