Lines Matching +full:0 +full:x133

54     CTLFLAG_RW | CTLFLAG_MPSAFE, 0,
57 static u_int ldm_debug = 0;
59 CTLFLAG_RWTUN, &ldm_debug, 0, "Debug level");
65 static u_int show_mirrors = 0;
67 CTLFLAG_RWTUN, &show_mirrors, 0, "Show mirrored volumes");
73 } while (0)
76 hexdump(buf, size, NULL, 0); \
78 } while (0)
95 #define LDM_PH_MBRINDEX 0
98 #define LDM_VERSION_2K 0x2000b
99 #define LDM_VERSION_VISTA 0x2000c
100 #define LDM_PH_VERSION_OFF 0x00c
101 #define LDM_PH_DISKGUID_OFF 0x030
102 #define LDM_PH_DGGUID_OFF 0x0b0
103 #define LDM_PH_DGNAME_OFF 0x0f0
104 #define LDM_PH_START_OFF 0x11b
105 #define LDM_PH_SIZE_OFF 0x123
106 #define LDM_PH_DB_OFF 0x12b
107 #define LDM_PH_DBSIZE_OFF 0x133
108 #define LDM_PH_TH1_OFF 0x13b
109 #define LDM_PH_TH2_OFF 0x143
110 #define LDM_PH_CONFSIZE_OFF 0x153
111 #define LDM_PH_LOGSIZE_OFF 0x15b
136 #define LDM_TH_NAME1_OFF 0x024
137 #define LDM_TH_CONF_OFF 0x02e
138 #define LDM_TH_CONFSIZE_OFF 0x036
139 #define LDM_TH_NAME2_OFF 0x046
140 #define LDM_TH_LOG_OFF 0x050
141 #define LDM_TH_LOGSIZE_OFF 0x058
151 #define LDM_DB_LASTSEQ_OFF 0x004
152 #define LDM_DB_SIZE_OFF 0x008
153 #define LDM_DB_STATUS_OFF 0x010
154 #define LDM_DB_VERSION_OFF 0x012
155 #define LDM_DB_DGNAME_OFF 0x016
156 #define LDM_DB_DGGUID_OFF 0x035
208 #if 0
238 * 0x00 16 standard VBLK header
239 * 0x10 2 update status
240 * 0x13 1 VBLK type
241 * 0x18 PS object id
242 * 0x18+ PN object name
244 * o Offset 0x18+ means '0x18 + length of all variable-width fields'
249 #define LDM_VBLK_SEQ_OFF 0x04
250 #define LDM_VBLK_GROUP_OFF 0x08
251 #define LDM_VBLK_INDEX_OFF 0x0c
252 #define LDM_VBLK_COUNT_OFF 0x0e
253 #define LDM_VBLK_TYPE_OFF 0x13
254 #define LDM_VBLK_OID_OFF 0x18
262 #define LDM_VBLK_T_COMPONENT 0x32
263 #define LDM_VBLK_T_PARTITION 0x33
264 #define LDM_VBLK_T_DISK 0x34
265 #define LDM_VBLK_T_DISKGROUP 0x35
266 #define LDM_VBLK_T_DISK4 0x44
267 #define LDM_VBLK_T_DISKGROUP4 0x45
268 #define LDM_VBLK_T_VOLUME 0x51
277 #if 0
354 { 0, 0 }
364 MODULE_VERSION(geom_part_ldm, 0);
392 if (memcmp(buf, LDM_PH_SIGN, strlen(LDM_PH_SIGN)) != 0) { in ldm_privhdr_read()
409 memset(hdr, 0, sizeof(*hdr)); in ldm_privhdr_parse()
413 LDM_DEBUG(0, "%s: unsupported LDM version %u.%u", in ldm_privhdr_parse()
415 version & 0xFFFF); in ldm_privhdr_parse()
419 if (error != 0) in ldm_privhdr_parse()
422 if (error != 0) in ldm_privhdr_parse()
429 hdr->th_offset[0] = be64dec(buf + LDM_PH_TH1_OFF); in ldm_privhdr_parse()
433 return (0); in ldm_privhdr_parse()
458 for (found = 0, i = is_gpt; i < nitems(ldm_ph_off); i++) { in ldm_privhdr_check()
481 if (error != 0) { in ldm_privhdr_check()
494 hdr.th_offset[0] >= LDM_DB_SIZE || in ldm_privhdr_check()
503 hdr.db_offset, hdr.db_size, hdr.th_offset[0], in ldm_privhdr_check()
508 if (found != 0 && memcmp(&db->ph, &hdr, sizeof(hdr)) != 0) { in ldm_privhdr_check()
509 LDM_DEBUG(0, "%s: private headers are not equal", in ldm_privhdr_check()
516 LDM_DEBUG(0, "%s: refuse LDM metadata", in ldm_privhdr_check()
525 found = 0; in ldm_privhdr_check()
527 if (found == 0) in ldm_privhdr_check()
531 if (found == 0) { in ldm_privhdr_check()
536 return (0); in ldm_privhdr_check()
550 error = 0; in ldm_gpt_check()
563 if (error != 0) { in ldm_gpt_check()
564 LDM_DEBUG(0, "%s: GPT partition %d boundaries " in ldm_gpt_check()
585 for (i = 0, found = 0; i < LDM_TH_COUNT; i++) { in ldm_tochdr_check()
594 if (memcmp(buf, LDM_TH_SIGN, strlen(LDM_TH_SIGN)) != 0 || in ldm_tochdr_check()
596 strlen(LDM_TH_NAME1)) != 0 || in ldm_tochdr_check()
598 strlen(LDM_TH_NAME2)) != 0) { in ldm_tochdr_check()
621 if (found == 0) in ldm_tochdr_check()
625 if (found == 0) { in ldm_tochdr_check()
626 LDM_DEBUG(0, "%s: valid LDM TOC header not found.", in ldm_tochdr_check()
630 return (0); in ldm_tochdr_check()
648 LDM_DEBUG(0, "%s: failed to read VMDB header at " in ldm_vmdbhdr_check()
652 if (memcmp(buf, LDM_VMDB_SIGN, strlen(LDM_VMDB_SIGN)) != 0) { in ldm_vmdbhdr_check()
654 LDM_DEBUG(0, "%s: failed to parse VMDB header at " in ldm_vmdbhdr_check()
660 if (version != 0x4000A) { in ldm_vmdbhdr_check()
662 LDM_DEBUG(0, "%s: unsupported VMDB version %u.%u", in ldm_vmdbhdr_check()
663 pp->name, version >> 16, version & 0xFFFF); in ldm_vmdbhdr_check()
674 LDM_DEBUG(0, "%s: VMDB is not in a consistent state", in ldm_vmdbhdr_check()
682 if (error != 0 || db->dh.size == 0 || in ldm_vmdbhdr_check()
683 pp->sectorsize % db->dh.size != 0 || in ldm_vmdbhdr_check()
684 strncmp(buf + LDM_DB_DGNAME_OFF, db->ph.dg_name, 31) != 0 || in ldm_vmdbhdr_check()
685 memcmp(&dg_guid, &db->ph.dg_guid, sizeof(dg_guid)) != 0 || in ldm_vmdbhdr_check()
688 LDM_DEBUG(0, "%s: invalid values in the VMDB header", in ldm_vmdbhdr_check()
695 return (0); in ldm_vmdbhdr_check()
713 blk->map = 0xFF << vh->count; in ldm_xvblk_handle()
716 if ((blk->map & (1 << vh->index)) != 0) { in ldm_xvblk_handle()
723 return (0); in ldm_xvblk_handle()
736 for (num = 0; len > 0; len--) in ldm_vnum_get()
753 result[len] = '\0'; in ldm_vstr_get()
782 if (offset < 0) { in ldm_vblk_handle()
787 if (offset < 0) { in ldm_vblk_handle()
796 * 0x18+ PS volume state in ldm_vblk_handle()
797 * 0x18+5 PN component children count in ldm_vblk_handle()
798 * 0x1D+16 PN parent's volume object id in ldm_vblk_handle()
799 * 0x2D+1 PN stripe size in ldm_vblk_handle()
803 if (offset < 0) { in ldm_vblk_handle()
808 if (offset < 0) { in ldm_vblk_handle()
814 if (offset < 0) { in ldm_vblk_handle()
823 * 0x18+12 8 partition start offset in ldm_vblk_handle()
824 * 0x18+20 8 volume offset in ldm_vblk_handle()
825 * 0x18+28 PN partition size in ldm_vblk_handle()
826 * 0x34+ PN parent's component object id in ldm_vblk_handle()
827 * 0x34+ PN disk's object id in ldm_vblk_handle()
837 if (offset < 0) { in ldm_vblk_handle()
842 if (offset < 0) { in ldm_vblk_handle()
847 if (offset < 0) { in ldm_vblk_handle()
856 * 0x18+ PS disk GUID in ldm_vblk_handle()
861 if (offset < 0) in ldm_vblk_handle()
864 if (error != 0) in ldm_vblk_handle()
872 * 0x18+ PS disk group GUID in ldm_vblk_handle()
875 #if 0 in ldm_vblk_handle()
879 if (offset < 0) { in ldm_vblk_handle()
884 if (error != 0) { in ldm_vblk_handle()
895 * 0x18+ 16 disk GUID in ldm_vblk_handle()
905 * 0x18+ 16 disk GUID in ldm_vblk_handle()
908 #if 0 in ldm_vblk_handle()
919 * 0x18+ PS volume type in ldm_vblk_handle()
920 * 0x18+ PS unknown in ldm_vblk_handle()
921 * 0x18+ 14(S) volume state in ldm_vblk_handle()
922 * 0x18+16 1 volume number in ldm_vblk_handle()
923 * 0x18+21 PN volume children count in ldm_vblk_handle()
924 * 0x2D+16 PN volume size in ldm_vblk_handle()
925 * 0x3D+4 1 partition type in ldm_vblk_handle()
929 if (offset < 0) { in ldm_vblk_handle()
934 if (offset < 0) { in ldm_vblk_handle()
944 if (offset < 0) { in ldm_vblk_handle()
949 if (offset < 0) { in ldm_vblk_handle()
971 LDM_DEBUG(1, "unknown VBLK type 0x%02x\n", blk->type); in ldm_vblk_handle()
975 return (0); in ldm_vblk_handle()
977 LDM_DEBUG(0, "failed to parse '%s' in VBLK of type 0x%02x\n", in ldm_vblk_handle()
1020 for (n = 0; n < size; n += maxphys / pp->sectorsize) { in ldm_vmdb_parse()
1028 LDM_DEBUG(0, "%s: failed to read VBLK\n", in ldm_vmdb_parse()
1035 strlen(LDM_VBLK_SIGN)) != 0) { in ldm_vmdb_parse()
1036 LDM_DEBUG(0, "%s: no VBLK signature\n", in ldm_vmdb_parse()
1044 if (vh.seq == 0 || vh.group == 0) in ldm_vmdb_parse()
1048 if (vh.count == 0 || vh.count > 4 || in ldm_vmdb_parse()
1050 LDM_DEBUG(0, "%s: invalid values " in ldm_vmdb_parse()
1057 if (error != 0) { in ldm_vmdb_parse()
1058 LDM_DEBUG(0, "%s: xVBLK " in ldm_vmdb_parse()
1065 if (be16dec(p + 16) != 0) in ldm_vmdb_parse()
1070 if (error != 0) in ldm_vmdb_parse()
1079 if (xvblk->map == 0xFF) { in ldm_vmdb_parse()
1081 if (error != 0) in ldm_vmdb_parse()
1084 LDM_DEBUG(0, "%s: incomplete or corrupt " in ldm_vmdb_parse()
1110 return (0); in ldm_vmdb_parse()
1158 basetable->gpt_smhead = (1 << ldm_ph_off[0]) | 1; in g_part_ldm_destroy()
1167 return (0); in g_part_ldm_destroy()
1193 return (0); in g_part_ldm_dumpto()
1234 &gpt_uuid_ms_ldm_metadata, sizeof(struct uuid)) != 0 || in ldm_gpt_probe()
1241 if (error != 0) { in ldm_gpt_probe()
1246 error = g_access(cp2, 1, 0, 0); in ldm_gpt_probe()
1247 if (error != 0) { in ldm_gpt_probe()
1270 g_access(cp2, -1, 0, 0); in ldm_gpt_probe()
1291 if (error == 0 && strcmp(type, "GPT") == 0) { in g_part_ldm_probe()
1292 if (g_getattr("PART::type", cp, &type) != 0 || in g_part_ldm_probe()
1293 strcmp(type, "ms-ldm-data") != 0) in g_part_ldm_probe()
1299 if (basetable->gpt_depth != 0) in g_part_ldm_probe()
1307 buf = g_read_data(cp, 0, pp->sectorsize, &error); in g_part_ldm_probe()
1317 for (idx = 0; idx < NDOSPART && error != 0; idx++) { in g_part_ldm_probe()
1319 error = 0; in g_part_ldm_probe()
1322 if (error == 0) { in g_part_ldm_probe()
1350 memset(&db, 0, sizeof(db)); in g_part_ldm_read()
1356 if (error != 0) in g_part_ldm_read()
1358 basetable->gpt_first = table->is_gpt ? 0: db.ph.start; in g_part_ldm_read()
1364 if (error != 0) in g_part_ldm_read()
1371 db.ph.db_offset = 0; in g_part_ldm_read()
1375 if (error != 0) in g_part_ldm_read()
1379 if (error != 0) in g_part_ldm_read()
1389 g_access(cp, -1, 0, 0); in g_part_ldm_read()
1395 if (error != 0) in g_part_ldm_read()
1400 sizeof(struct uuid)) == 0) in g_part_ldm_read()
1415 skipped = 0; in g_part_ldm_read()
1417 if (comp->count > 1 || part->offset != 0) { in g_part_ldm_read()
1428 if (vol->count > 1 && show_mirrors == 0) { in g_part_ldm_read()
1446 if (skipped == 0) in g_part_ldm_read()
1451 " end: %ju, type: 0x%02x\n", cp->provider->name, in g_part_ldm_read()
1470 for (i = 0; i < nitems(ldm_alias_match); i++) { in g_part_ldm_type()