Lines Matching defs:dscr
721 udf_tagsize(union dscrptr *dscr, uint32_t lb_size)
725 tag_id = udf_rw16(dscr->tag.id);
730 size += udf_rw32(dscr->lvd.mt_l);
735 size += udf_rw32(dscr->usd.alloc_desc_num) * elmsz;
738 size = UDF_FID_SIZE + dscr->fid.l_fi + udf_rw16(dscr->fid.l_iu);
743 size += udf_rw32(dscr->lvid.l_iu);
744 size += (2 * udf_rw32(dscr->lvid.num_part) * sizeof(uint32_t));
748 size += udf_rw32(dscr->sbd.num_bytes);
753 size += udf_rw16(dscr->spt.rt_l) * elmsz;
757 size += udf_rw32(dscr->fe.l_ea) + udf_rw32(dscr->fe.l_ad)-1;
761 size += udf_rw32(dscr->efe.l_ea) + udf_rw32(dscr->efe.l_ad)-1;
1009 #define UDF_UPDATE_DSCR(name, dscr) \
1012 name = dscr;
1015 udf_process_vds_descriptor(struct udf_mount *ump, union dscrptr *dscr)
1020 udf_rw16(dscr->tag.id)));
1021 switch (udf_rw16(dscr->tag.id)) {
1023 UDF_UPDATE_DSCR(ump->primary_vol, &dscr->pvd);
1026 UDF_UPDATE_DSCR(ump->logical_vol, &dscr->lvd);
1029 UDF_UPDATE_DSCR(ump->unallocated, &dscr->usd);
1033 UDF_UPDATE_DSCR(ump->implementation, &dscr->ivd);
1037 if ((udf_rw16(dscr->pd.flags) & UDF_PART_FLAG_ALLOCATED) == 0) {
1038 free(dscr, M_UDFVOLD);
1047 raw_phys_part = udf_rw16(dscr->pd.part_num);
1051 free(dscr, M_UDFVOLD);
1055 UDF_UPDATE_DSCR(ump->partitions[phys_part], &dscr->pd);
1059 free(dscr, M_UDFVOLD);
1063 udf_rw16(dscr->tag.id)));
1064 free(dscr, M_UDFVOLD);
1076 union dscrptr *dscr;
1085 error = udf_read_phys_dscr(ump, loc, M_UDFVOLD, &dscr);
1090 if (dscr == NULL)
1094 if (udf_rw16(dscr->tag.id) == TAGID_TERM) {
1095 free(dscr, M_UDFVOLD);
1100 dscr_size = udf_tagsize(dscr, sector_size);
1101 error = udf_process_vds_descriptor(ump, dscr);
1103 free(dscr, M_UDFVOLD);
1176 union dscrptr *dscr;
1198 dscr = NULL;
1205 error = udf_read_phys_dscr(ump, lbnum, M_UDFVOLD, &dscr);
1207 if (dscr == NULL) {
1211 dscr_type = udf_rw16(dscr->tag.id);
1223 lvint = &dscr->lvid;
1224 dscr = NULL;
1235 if (dscr && lvint->next_extent.len) {
1256 if (dscr)
1257 free(dscr, M_UDFVOLD);
1275 union dscrptr **bufs, *dscr, *last_dscr;
1356 &dscr);
1359 dscr = last_dscr;
1361 bufs[cnt] = dscr;
1363 if (dscr == NULL) {
1368 dscr_type = udf_rw16(dscr->tag.id);
1378 last_dscr = dscr;
1534 union dscrptr *dscr;
1557 error = udf_read_phys_dscr(ump, lb_num, M_UDFVOLD, &dscr);
1558 if (!error && dscr) {
1560 dscr_type = udf_rw16(dscr->tag.id);
1563 ump->part_unalloc_dscr[phys_part] = &dscr->sbd;
1567 bitmap->blob = (uint8_t *) dscr;
1568 bitmap->bits = dscr->sbd.data;
1569 bitmap->max_offset = udf_rw32(dscr->sbd.num_bits);
1574 free(dscr, M_UDFVOLD);
1616 error = udf_read_phys_dscr(ump, lb_num, M_UDFVOLD, &dscr);
1617 if (!error && dscr) {
1619 dscr_type = udf_rw16(dscr->tag.id);
1622 ump->part_freed_dscr[phys_part] = &dscr->sbd;
1626 bitmap->blob = (uint8_t *) dscr;
1627 bitmap->bits = dscr->sbd.data;
1628 bitmap->max_offset = udf_rw32(dscr->sbd.num_bits);
1633 free(dscr, M_UDFVOLD);
1668 union dscrptr *dscr;
1692 dscr = (union dscrptr *) ump->part_unalloc_dscr[phys_part];
1696 KASSERT(udf_rw16(dscr->sbd.tag.id) == TAGID_SPACE_BITMAP);
1697 if (udf_rw16(dscr->sbd.tag.desc_crc_len) == 0)
1698 dscr->sbd.tag.desc_crc_len = udf_rw16(8);
1702 (union dscrptr *) dscr,
1726 dscr = (union dscrptr *) ump->part_freed_dscr[phys_part];
1730 KASSERT(udf_rw16(dscr->sbd.tag.id) == TAGID_SPACE_BITMAP);
1731 if (udf_rw16(dscr->sbd.tag.desc_crc_len) == 0)
1732 dscr->sbd.tag.desc_crc_len = udf_rw16(8);
1736 (union dscrptr *) dscr,
1752 union dscrptr *dscr;
1774 dscr = malloc(inflen, M_UDFVOLD, M_WAITOK);
1775 if (!dscr)
1783 dscr,
1794 dscr_type = udf_rw16(dscr->tag.id);
1797 ump->metadata_unalloc_dscr = &dscr->sbd;
1801 bitmap->blob = (uint8_t *) dscr;
1802 bitmap->bits = dscr->sbd.data;
1803 bitmap->max_offset = udf_rw32(dscr->sbd.num_bits);
1815 free(dscr, M_UDFVOLD);
1826 union dscrptr *dscr;
1841 dscr = (union dscrptr *) ump->metadata_unalloc_dscr;
1842 new_inflen = udf_tagsize(dscr, 1);
1852 dscr,
2479 udf_extattr_insert_internal(struct udf_mount *ump, union dscrptr *dscr,
2491 if (udf_rw16(dscr->tag.id) == TAGID_FENTRY) {
2492 fe = &dscr->fe;
2496 } else if (udf_rw16(dscr->tag.id) == TAGID_EXTFENTRY) {
2497 efe = &dscr->efe;
3152 union dscrptr *dscr;
3170 error = udf_read_phys_dscr(ump, lb_num, M_UDFVOLD, &dscr);
3171 if (!error && dscr) {
3172 if (udf_rw16(dscr->tag.id) == TAGID_SPARING_TABLE) {
3175 ump->sparing_table = &dscr->spt;
3176 dscr = NULL;
3183 if (dscr)
3184 free(dscr, M_UDFVOLD);
3342 union dscrptr *dscr;
3356 dscr = NULL;
3365 error = udf_read_phys_dscr(ump, lb_num, M_UDFVOLD, &dscr);
3367 if (error || (dscr == NULL))
3371 dscr_type = udf_rw16(dscr->tag.id);
3375 free(dscr, M_UDFVOLD);
3389 ump->fileset_desc = &dscr->fsd;
3390 dscr = NULL;
3403 if (dscr)
3404 free(dscr, M_UDFVOLD);
4111 union dscrptr *dscr;
4114 dscr = malloc(ump->discinfo.sector_size, M_TEMP, M_WAITOK|M_ZERO);
4115 udf_inittag(ump, &dscr->tag, TAGID_TERM, sector);
4118 dscr->tag.desc_crc_len = udf_rw16(512-UDF_DESC_TAG_LENGTH);
4119 (void) udf_validate_tag_and_crc_sums(dscr);
4122 dscr, sector, sector);
4124 free(dscr, M_TEMP);
5355 union dscrptr *dscr;
5418 error = udf_read_logvol_dscr(ump, &icb_loc, &dscr);
5421 if ((dscr == NULL) && (!strat4096))
5425 if (error || (dscr == NULL))
5429 dscr_type = udf_rw16(dscr->tag.id);
5435 next_icb_loc = dscr->inde.indirect_icb;
5436 udf_free_logvol_dscr(ump, &icb_loc, dscr);
5448 udf_free_logvol_dscr(ump, &icb_loc, dscr);
5453 KASSERT(udf_tagsize(dscr, lb_size) == lb_size);
5463 udf_node->fe = &dscr->fe;
5471 udf_node->efe = &dscr->efe;
5516 /* assert no references to dscr anymore beyond this point */
5518 dscr = NULL;
5577 error = udf_read_logvol_dscr(ump, &icb_loc, &dscr);
5578 if (error || (dscr == NULL))
5582 dscr_type = udf_rw16(dscr->tag.id);
5585 udf_free_logvol_dscr(ump, &icb_loc, dscr);
5591 udf_node->ext[udf_node->num_extensions] = &dscr->aee;
5690 union dscrptr *dscr;
5725 dscr = (union dscrptr *) udf_node->ext[extnr];
5726 error = udf_write_logvol_dscr(udf_node, dscr, loc, 0);
5736 dscr = (union dscrptr *) udf_node->fe;
5740 dscr = (union dscrptr *) udf_node->efe;
5742 KASSERT(dscr);
5745 error = udf_write_logvol_dscr(udf_node, dscr, loc, waitfor);
5822 union dscrptr *dscr;
5934 udf_create_logvol_dscr(ump, udf_node, &node_icb_loc, &dscr);
5938 udf_node->fe = &dscr->fe;
5944 udf_node->efe = &dscr->efe;
5949 KASSERT(dscr->tag.tag_loc == udf_node->loc.loc.lb_num);
6034 void *dscr;
6062 dscr = udf_node->fe;
6063 udf_free_descriptor_space(udf_node, loc, dscr);
6064 dscr = udf_node->efe;
6065 udf_free_descriptor_space(udf_node, loc, dscr);
6068 dscr = udf_node->ext[extnr];
6070 udf_free_descriptor_space(udf_node, loc, dscr);