Lines Matching defs:od
56 static int ps3disk_open_gpt(struct ps3_devdesc *dev, struct open_dev *od);
115 struct open_dev *od = (struct open_dev *) dev->d_disk.data;
132 err = ps3stor_read_sectors(&stor_dev, dev->d_unit, od->od_start + dblk,
149 struct open_dev *od;
156 od = malloc(sizeof(struct open_dev));
157 if (!od) {
162 err = ps3disk_open_gpt(dev, od);
166 free(od);
168 ((struct ps3_devdesc *) (f->f_devdata))->d_disk.data = od;
177 struct open_dev *od = dev->d_disk.data;
179 if (dev->d_disk.ptype == PTYPE_GPT && od->od_gpt_nparts)
180 free(od->od_gpt_parts);
182 free(od);
193 static int ps3disk_open_gpt(struct ps3_devdesc *dev, struct open_dev *od)
201 od->od_gpt_nparts = 0;
202 od->od_gpt_parts = NULL;
256 od->od_gpt_nparts = nparts;
258 od->od_gpt_parts = malloc(nparts * sizeof(struct gpt_part));
259 if (!od->od_gpt_parts) {
279 od->od_gpt_parts[part].gp_index = (lba - slba) * eps + i + 1;
280 od->od_gpt_parts[part].gp_type = ent[i].ent_type;
281 od->od_gpt_parts[part].gp_start = le64toh(ent[i].ent_lba_start);
282 od->od_gpt_parts[part].gp_end = le64toh(ent[i].ent_lba_end);
283 ps3disk_uuid_letoh(&od->od_gpt_parts[part].gp_type);
291 if (od->od_gpt_nparts && !dev->d_disk.pnum)
292 dev->d_disk.pnum = od->od_gpt_parts[0].gp_index;
294 for (i = 0; i < od->od_gpt_nparts; i++)
295 if (od->od_gpt_parts[i].gp_index == dev->d_disk.pnum)
296 od->od_start = od->od_gpt_parts[i].gp_start;
302 if (err && od->od_gpt_parts)
303 free(od->od_gpt_parts);