Lines Matching refs:table

256 ptable_gptread(struct ptable *table, void *dev, diskread_t dread)  in ptable_gptread()  argument
266 buf = malloc(table->sectorsize); in ptable_gptread()
269 tbl = malloc(table->sectorsize * MAXTBLSZ); in ptable_gptread()
276 ptable_close(table); in ptable_gptread()
277 table = NULL; in ptable_gptread()
282 phdr = gpt_checkhdr((struct gpt_hdr *)buf, 1, table->sectors - 1, in ptable_gptread()
283 table->sectorsize); in ptable_gptread()
287 table->sectorsize - 1) / table->sectorsize); in ptable_gptread()
289 gpt_checktbl(phdr, tbl, size * table->sectorsize, in ptable_gptread()
290 table->sectors - 1) == 0) { in ptable_gptread()
295 offset = pri ? hdr.hdr_lba_alt: table->sectors - 1; in ptable_gptread()
301 table->sectors - 1, table->sectorsize); in ptable_gptread()
320 phdr->hdr_entsz + table->sectorsize - 1) / in ptable_gptread()
321 table->sectorsize); in ptable_gptread()
323 gpt_checktbl(phdr, tbl, size * table->sectorsize, in ptable_gptread()
324 table->sectors - 1) == 0) { in ptable_gptread()
332 table->type = PTABLE_NONE; in ptable_gptread()
337 MAXTBLSZ * table->sectorsize); in ptable_gptread()
348 table->sectors = hdr.hdr_lba_alt + 1; in ptable_gptread()
370 STAILQ_INSERT_TAIL(&table->entries, entry, entry); in ptable_gptread()
376 return (table); in ptable_gptread()
409 ptable_ebrread(struct ptable *table, void *dev, diskread_t dread) in ptable_ebrread() argument
417 STAILQ_FOREACH(e1, &table->entries, entry) { in ptable_ebrread()
423 return (table); in ptable_ebrread()
426 buf = malloc(table->sectorsize); in ptable_ebrread()
428 return (table); in ptable_ebrread()
432 if (offset >= table->sectors) in ptable_ebrread()
456 STAILQ_INSERT_TAIL(&table->entries, entry, entry); in ptable_ebrread()
463 return (table); in ptable_ebrread()
485 ptable_bsdread(struct ptable *table, void *dev, diskread_t dread) in ptable_bsdread() argument
494 if (table->sectorsize < sizeof (struct disklabel)) { in ptable_bsdread()
496 return (table); in ptable_bsdread()
498 buf = malloc(table->sectorsize); in ptable_bsdread()
500 return (table); in ptable_bsdread()
503 ptable_close(table); in ptable_bsdread()
504 table = NULL; in ptable_bsdread()
511 if (le32toh(dl->d_secsize) != table->sectorsize) { in ptable_bsdread()
537 STAILQ_INSERT_TAIL(&table->entries, entry, entry); in ptable_bsdread()
540 table->type = PTABLE_BSD; in ptable_bsdread()
543 return (table); in ptable_bsdread()
565 ptable_vtoc8read(struct ptable *table, void *dev, diskread_t dread) in ptable_vtoc8read() argument
573 if (table->sectorsize != sizeof (struct vtoc8)) in ptable_vtoc8read()
574 return (table); in ptable_vtoc8read()
575 buf = malloc(table->sectorsize); in ptable_vtoc8read()
577 return (table); in ptable_vtoc8read()
580 ptable_close(table); in ptable_vtoc8read()
581 table = NULL; in ptable_vtoc8read()
617 STAILQ_INSERT_TAIL(&table->entries, entry, entry); in ptable_vtoc8read()
620 table->type = PTABLE_VTOC8; in ptable_vtoc8read()
623 return (table); in ptable_vtoc8read()
653 ptable_dklabelread(struct ptable *table, void *dev, diskread_t dread) in ptable_dklabelread() argument
661 if (table->sectorsize < sizeof (struct dk_label)) { in ptable_dklabelread()
663 return (table); in ptable_dklabelread()
665 buf = malloc(table->sectorsize); in ptable_dklabelread()
667 return (table); in ptable_dklabelread()
670 ptable_close(table); in ptable_dklabelread()
671 table = NULL; in ptable_dklabelread()
703 STAILQ_INSERT_TAIL(&table->entries, entry, entry); in ptable_dklabelread()
706 table->type = PTABLE_VTOC; in ptable_dklabelread()
709 return (table); in ptable_dklabelread()
712 #define cdb2devb(bno) ((bno) * ISO_DEFAULT_BLOCK_SIZE / table->sectorsize)
715 ptable_iso9660read(struct ptable *table, void *dev, diskread_t dread) in ptable_iso9660read() argument
721 buf = malloc(table->sectorsize); in ptable_iso9660read()
723 return (table); in ptable_iso9660read()
727 ptable_close(table); in ptable_iso9660read()
728 table = NULL; in ptable_iso9660read()
739 entry->part.end = table->sectors; in ptable_iso9660read()
742 STAILQ_INSERT_TAIL(&table->entries, entry, entry); in ptable_iso9660read()
744 table->type = PTABLE_ISO9660; in ptable_iso9660read()
748 return (table); in ptable_iso9660read()
755 struct ptable *table; in ptable_open() local
763 table = NULL; in ptable_open()
774 table = malloc(sizeof (*table)); in ptable_open()
775 if (table == NULL) in ptable_open()
777 table->sectors = sectors; in ptable_open()
778 table->sectorsize = sectorsize; in ptable_open()
779 table->type = PTABLE_NONE; in ptable_open()
780 STAILQ_INIT(&table->entries); in ptable_open()
782 if (ptable_iso9660read(table, dev, dread) == NULL) { in ptable_open()
784 table = NULL; in ptable_open()
786 } else if (table->type == PTABLE_ISO9660) in ptable_open()
789 if (ptable_dklabelread(table, dev, dread) == NULL) { /* Read error. */ in ptable_open()
790 table = NULL; in ptable_open()
792 } else if (table->type == PTABLE_VTOC) in ptable_open()
797 if (ptable_vtoc8read(table, dev, dread) == NULL) { in ptable_open()
799 table = NULL; in ptable_open()
801 } else if (table->type == PTABLE_VTOC8) in ptable_open()
806 if (ptable_bsdread(table, dev, dread) == NULL) { /* Read error. */ in ptable_open()
807 table = NULL; in ptable_open()
809 } else if (table->type == PTABLE_BSD) in ptable_open()
819 table->type = PTABLE_GPT; in ptable_open()
820 table = ptable_gptread(table, dev, dread); in ptable_open()
843 table->type = PTABLE_GPT; in ptable_open()
849 if (table->type == PTABLE_GPT) { in ptable_open()
850 table = ptable_gptread(table, dev, dread); in ptable_open()
857 table->type = PTABLE_MBR; in ptable_open()
881 STAILQ_INSERT_TAIL(&table->entries, entry, entry); in ptable_open()
885 table = ptable_ebrread(table, dev, dread); in ptable_open()
893 return (table); in ptable_open()
897 ptable_close(struct ptable *table) in ptable_close() argument
901 if (table == NULL) in ptable_close()
904 while (!STAILQ_EMPTY(&table->entries)) { in ptable_close()
905 entry = STAILQ_FIRST(&table->entries); in ptable_close()
906 STAILQ_REMOVE_HEAD(&table->entries, entry); in ptable_close()
909 free(table); in ptable_close()
913 ptable_gettype(const struct ptable *table) in ptable_gettype() argument
916 return (table->type); in ptable_gettype()
920 ptable_getsize(const struct ptable *table, uint64_t *sizep) in ptable_getsize() argument
922 uint64_t tmp = table->sectors * table->sectorsize; in ptable_getsize()
924 if (tmp < table->sectors) in ptable_getsize()
933 ptable_getpart(const struct ptable *table, struct ptable_entry *part, int idx) in ptable_getpart() argument
937 if (part == NULL || table == NULL) in ptable_getpart()
940 STAILQ_FOREACH(entry, &table->entries, entry) { in ptable_getpart()
968 ptable_getbestpart(const struct ptable *table, struct ptable_entry *part) in ptable_getbestpart() argument
973 if (part == NULL || table == NULL) in ptable_getbestpart()
978 STAILQ_FOREACH(entry, &table->entries, entry) { in ptable_getbestpart()
980 if (table->type == PTABLE_MBR) { in ptable_getbestpart()
1005 if (table->type == PTABLE_GPT) { in ptable_getbestpart()
1030 ptable_iterate(const struct ptable *table, void *arg, ptable_iterate_t *iter) in ptable_iterate() argument
1037 STAILQ_FOREACH(entry, &table->entries, entry) { in ptable_iterate()
1039 if (table->type == PTABLE_MBR) in ptable_iterate()
1044 if (table->type == PTABLE_GPT) in ptable_iterate()
1049 if (table->type == PTABLE_VTOC8) in ptable_iterate()
1054 if (table->type == PTABLE_VTOC) in ptable_iterate()
1058 if (table->type == PTABLE_BSD) in ptable_iterate()