Lines Matching defs:ump

72 static void udf_record_allocation_in_node(struct udf_mount *ump,
76 static void udf_collect_free_space_for_vpart(struct udf_mount *ump,
104 lb_size = udf_rw32(udf_node->ump->logical_vol->lb_size);
162 udf_assert_allocated(struct udf_mount *ump, uint16_t vpart_num,
178 pdesc = ump->partitions[ump->vtop[vpart_num]];
180 switch (ump->vtop_tp[vpart_num]) {
185 phys_part = ump->vtop[vpart_num];
188 bitmap = &ump->part_unalloc_bits[phys_part];
249 // KASSERT(mutex_owned(&udf_node->ump->allocate_mutex));
254 lb_size = udf_rw32(udf_node->ump->logical_vol->lb_size);
324 udf_assert_allocated(udf_node->ump, part_num, lb_num,
337 // KASSERT(mutex_owned(&udf_node->ump->allocate_mutex));
364 udf_calc_freespace(struct udf_mount *ump, uint64_t *sizeblks, uint64_t *freeblks)
370 lvid = ump->logvol_integrity;
383 if (ump->discinfo.mmc_cur & MMC_CAP_SEQUENTIAL) {
386 *freeblks = ump->data_track.free_blocks;
387 if (ump->data_track.tracknr != ump->metadata_track.tracknr)
388 *freeblks += ump->metadata_track.free_blocks;
389 *sizeblks = ump->discinfo.last_possible_lba;
403 *freeblks -= ump->uncommitted_lbs[vpart];
414 udf_calc_vpart_freespace(struct udf_mount *ump, uint16_t vpart_num, uint64_t *freeblks)
419 lvid = ump->logvol_integrity;
430 if (ump->discinfo.mmc_cur & MMC_CAP_SEQUENTIAL) {
432 if (vpart_num == ump->data_part) {
433 *freeblks = ump->data_track.free_blocks;
435 *freeblks = ump->metadata_track.free_blocks;
445 if (*freeblks > ump->uncommitted_lbs[vpart_num]) {
446 *freeblks -= ump->uncommitted_lbs[vpart_num];
455 udf_translate_vtop(struct udf_mount *ump, struct long_ad *icb_loc,
468 assert(ump && icb_loc && lb_numres);
476 part = ump->vtop[vpart];
477 pdesc = ump->partitions[part];
479 switch (ump->vtop_tp[vpart]) {
496 if (lb_num >= ump->vat_entries) /* XXX > or >= ? */
500 mutex_enter(&ump->allocate_mutex);
501 error = udf_vat_read(ump->vat_node,
503 ump->vat_offset + lb_num * 4);
504 mutex_exit(&ump->allocate_mutex);
521 lb_packet = lb_num / ump->sparable_packet_size;
522 lb_rel = lb_num % ump->sparable_packet_size;
524 for (rel = 0; rel < udf_rw16(ump->sparing_table->rt_l); rel++) {
525 sme = &ump->sparing_table->entries[rel];
529 *extres = ump->sparable_packet_size - lb_rel;
540 *extres = ump->sparable_packet_size - lb_rel;
546 lb_size = udf_rw32(ump->logical_vol->lb_size);
548 UDF_LOCK_NODE(ump->metadata_node, 0);
554 udf_get_adslot(ump->metadata_node,
567 UDF_UNLOCK_NODE(ump->metadata_node, 0);
595 UDF_UNLOCK_NODE(ump->metadata_node, 0);
609 ump->vtop_tp[vpart]);
619 udf_translate_vtop_list(struct udf_mount *ump, uint32_t sectors,
630 udf_translate_vtop(ump, &loc, &lb_numres, &ext_res);
649 struct udf_mount *ump;
671 ump = udf_node->ump;
672 lb_size = udf_rw32(ump->logical_vol->lb_size);
779 error = udf_translate_vtop(ump,
815 udf_search_free_vatloc(struct udf_mount *ump, uint32_t *lbnumres)
821 KASSERT(ump);
822 KASSERT(ump->logical_vol);
824 lb_size = udf_rw32(ump->logical_vol->lb_size);
829 lb_num = MIN(ump->vat_entries, ump->vat_last_free_lb);
834 chunk = MIN(lb_size, (ump->vat_entries - lb_num) * 4);
838 error = udf_vat_read(ump->vat_node, blob, chunk,
839 ump->vat_offset + lb_num * 4);
862 lb_num = ump->vat_entries;
863 ump->vat_entries++;
868 udf_vat_write(ump->vat_node, (uint8_t *) &lb_map, 4,
869 ump->vat_offset + lb_num *4);
870 ump->vat_last_free_lb = lb_num;
1031 udf_do_reserve_space(struct udf_mount *ump, struct udf_node *udf_node,
1034 ump->uncommitted_lbs[vpart_num] += num_lb;
1041 udf_do_unreserve_space(struct udf_mount *ump, struct udf_node *udf_node,
1044 ump->uncommitted_lbs[vpart_num] -= num_lb;
1045 if (ump->uncommitted_lbs[vpart_num] < 0) {
1048 ump->uncommitted_lbs[vpart_num]));
1049 ump->uncommitted_lbs[vpart_num] = 0;
1064 udf_reserve_space(struct udf_mount *ump, struct udf_node *udf_node,
1076 mutex_enter(&ump->allocate_mutex);
1080 udf_calc_vpart_freespace(ump, vpart_num, &freeblks);
1085 mutex_exit(&ump->allocate_mutex);
1086 udf_do_sync(ump, FSCRED, 0);
1089 mutex_enter(&ump->allocate_mutex);
1093 udf_calc_vpart_freespace(ump, vpart_num, &freeblks);
1098 vpart_num, ump->vtop_alloc[vpart_num]));
1100 udf_collect_free_space_for_vpart(ump, vpart_num, num_lb + slack);
1104 udf_calc_vpart_freespace(ump, vpart_num, &freeblks);
1106 udf_do_reserve_space(ump, udf_node, vpart_num, num_lb);
1112 mutex_exit(&ump->allocate_mutex);
1120 struct udf_mount *ump = udf_node->ump;
1123 mutex_enter(&ump->allocate_mutex);
1128 vpart_num = udf_get_record_vpart(ump, udf_get_c_type(udf_node));
1129 udf_do_unreserve_space(ump, udf_node, vpart_num, udf_node->uncommitted_lbs);
1131 DPRINTF(RESERVE, ("\ttotal now %d\n", ump->uncommitted_lbs[vpart_num]));
1134 if (ump->uncommitted_lbs[vpart_num] < 0)
1135 ump->uncommitted_lbs[vpart_num] = 0;
1137 mutex_exit(&ump->allocate_mutex);
1148 udf_allocate_space(struct udf_mount *ump, struct udf_node *udf_node,
1163 mutex_enter(&ump->allocate_mutex);
1165 lb_size = udf_rw32(ump->logical_vol->lb_size);
1166 KASSERT(lb_size == ump->discinfo.sector_size);
1168 alloc_type = ump->vtop_alloc[vpart_num];
1177 error = udf_search_free_vatloc(ump, &lb_num);
1183 udf_do_reserve_space(ump, udf_node,
1184 ump->vtop[vpart_num], num_lb);
1190 pdesc = ump->partitions[ump->vtop[vpart_num]];
1196 if (vpart_num == ump->node_part) {
1197 alloc_track = &ump->metadata_track;
1198 other_track = &ump->data_track;
1200 alloc_track = &ump->data_track;
1201 other_track = &ump->metadata_track;
1219 bitmap = &ump->part_unalloc_bits[vpart_num];
1221 ump->lvclose |= UDF_WRITE_PART_BITMAPS;
1235 lvid = ump->logvol_integrity;
1244 bitmap = &ump->metadata_unalloc_bits;
1246 ump->lvclose |= UDF_WRITE_PART_BITMAPS;
1260 lvid = ump->logvol_integrity;
1277 udf_do_unreserve_space(ump, udf_node, vpart_num, num_lb);
1291 mutex_exit(&ump->allocate_mutex);
1299 udf_free_allocated_space(struct udf_mount *ump, uint32_t lb_num,
1316 mutex_enter(&ump->allocate_mutex);
1318 switch (ump->vtop_tp[vpart_num]) {
1322 phys_part = ump->vtop[vpart_num];
1325 bitmap = &ump->part_freed_bits[phys_part];
1329 bitmap = &ump->part_unalloc_bits[phys_part];
1337 ump->lvclose |= UDF_WRITE_PART_BITMAPS;
1341 lvid = ump->logvol_integrity;
1352 error = udf_vat_write(ump->vat_node,
1354 ump->vat_offset + lb_num * 4);
1356 ump->vat_last_free_lb = MIN(ump->vat_last_free_lb, lb_num);
1360 bitmap = &ump->metadata_unalloc_bits;
1363 ump->lvclose |= UDF_WRITE_PART_BITMAPS;
1367 lvid = ump->logvol_integrity;
1374 "not implemented yet!\n", ump->vtop_tp[vpart_num]);
1378 mutex_exit(&ump->allocate_mutex);
1390 udf_synchronise_metadatamirror_node(struct udf_mount *ump)
1398 if (ump->metadata_flags & METADATA_DUPLICATED)
1401 meta_node = ump->metadata_node;
1402 metamirror_node = ump->metadatamirror_node;
1460 /* implementation limit: ump->datapart is the companion partition */
1462 udf_trunc_metadatapart(struct udf_mount *ump, uint32_t num_lb)
1475 unit = ump->metadata_alloc_unit_size;
1476 lb_size = udf_rw32(ump->logical_vol->lb_size);
1477 lvid = ump->logvol_integrity;
1487 meta_vpart_num = ump->node_part;
1488 KASSERT(ump->vtop_alloc[meta_vpart_num] == UDF_ALLOC_METABITMAP);
1491 data_vpart_num = ump->data_part;
1492 KASSERT(ump->vtop_alloc[data_vpart_num] == UDF_ALLOC_SPACEMAP);
1494 udf_calc_vpart_freespace(ump, data_vpart_num, &data_free_lbs);
1495 udf_calc_vpart_freespace(ump, meta_vpart_num, &meta_free_lbs);
1510 bitmap = &ump->metadata_unalloc_bits;
1520 bitmap_node = ump->metadatabitmap_node;
1546 ump->metadata_unalloc_dscr = new_sbd;
1549 ump->lvclose |= UDF_WRITE_PART_BITMAPS;
1556 mutex_exit(&ump->allocate_mutex);
1564 err = udf_shrink_node(ump->metadata_node, inf_len);
1566 if (ump->metadatamirror_node) {
1567 if (ump->metadata_flags & METADATA_DUPLICATED) {
1568 err = udf_shrink_node(ump->metadatamirror_node, inf_len);
1574 ump->lvclose |= UDF_WRITE_METAPART_NODES;
1577 mutex_enter(&ump->allocate_mutex);
1586 udf_sparsify_metadatapart(struct udf_mount *ump, uint32_t num_lb)
1593 udf_collect_free_space_for_vpart(struct udf_mount *ump,
1599 if (ump->vtop_tp[ump->node_part] != UDF_VTOP_TYPE_META) {
1605 if (ump->vtop_alloc[ump->node_part] == UDF_ALLOC_METASEQUENTIAL) {
1610 if (ump->vtop_tp[vpart_num] == UDF_VTOP_TYPE_META) {
1619 num_lb = udf_trunc_metadatapart(ump, num_lb);
1621 udf_sparsify_metadatapart(ump, num_lb);
1635 udf_late_allocate_buf(struct udf_mount *ump, struct buf *buf,
1650 lb_size = udf_rw32(ump->logical_vol->lb_size);
1654 KASSERT(lb_size == ump->discinfo.sector_size);
1657 vpart_num = *vpart_nump = udf_get_record_vpart(ump, udf_c_type);
1661 if (ump->vtop_alloc[ump->node_part] != UDF_ALLOC_VAT)
1665 vpart_num = ump->data_part;
1670 error = udf_allocate_space(ump, udf_node, udf_c_type,
1685 udf_record_allocation_in_node(ump, buf, vpart_num, lmapping,
1763 lb_size = udf_rw32(udf_node->ump->logical_vol->lb_size);
1917 struct udf_mount *ump = udf_node->ump;
1935 lb_size = udf_rw32(ump->logical_vol->lb_size);
2064 error = udf_reserve_space(ump, NULL, UDF_C_NODE,
2070 error = udf_allocate_space(ump, NULL, UDF_C_NODE,
2083 udf_create_logvol_dscr(ump, udf_node, &l_icb, &extdscr);
2086 udf_inittag(ump, &ext->tag, TAGID_ALLOCEXTENT, lb_num);
2201 udf_free_logvol_dscr(udf_node->ump, &s_ad,
2208 udf_free_allocated_space(udf_node->ump, lb_num, vpart_num, 1);
2229 udf_record_allocation_in_node(struct udf_mount *ump, struct buf *buf,
2260 lb_size = udf_rw32(udf_node->ump->logical_vol->lb_size);
2455 udf_free_allocated_space(ump, lb_num,
2597 struct udf_mount *ump = udf_node->ump;
2619 lb_size = udf_rw32(ump->logical_vol->lb_size);
2623 if ((udf_node == ump->metadata_node) || (udf_node == ump->metadatamirror_node))
2624 unit_size = ump->metadata_alloc_unit_size * lb_size;
2717 dst_part = udf_get_record_vpart(ump, udf_get_c_type(udf_node));
2870 struct udf_mount *ump = udf_node->ump;
2894 lb_size = udf_rw32(ump->logical_vol->lb_size);
2898 if ((udf_node == ump->metadata_node) || (udf_node == ump->metadatamirror_node))
2899 unit_size = ump->metadata_alloc_unit_size * lb_size;
3039 udf_free_allocated_space(ump, lb_num, vpart_num, num_lb);
3081 udf_free_allocated_space(ump, lb_num, vpart_num,