Lines Matching defs:bitmap
165 struct udf_bitmap *bitmap;
183 /* free space to freed or unallocated space bitmap */
187 /* use unallocated bitmap */
188 bitmap = &ump->part_unalloc_bits[phys_part];
191 if (bitmap->bits == NULL)
195 KASSERT(bitmap->bits);
197 bpos = bitmap->bits + lb_num/8;
203 KASSERT(bitmap->bits + lb_num/8 == bpos);
224 /* TODO check space in the metadata bitmap */
879 udf_bitmap_allocate(struct udf_bitmap *bitmap, int ismetadata,
889 diff = bitmap->data_pos - bitmap->metadata_pos;
891 bitmap->data_pos = bitmap->metadata_pos + 1024;
893 offset = ismetadata ? bitmap->metadata_pos : bitmap->data_pos;
896 if (offset >= bitmap->max_offset)
899 while (offset < bitmap->max_offset) {
904 bpos = bitmap->bits + offset/8;
912 if (offset + bit-1 >= bitmap->max_offset) {
913 offset = bitmap->max_offset;
928 bitmap->metadata_pos = offset;
930 bitmap->data_pos = offset;
936 udf_bitmap_free(struct udf_bitmap *bitmap, uint32_t lb_num, uint32_t num_lb)
945 bpos = bitmap->bits + offset/8;
961 bpos = bitmap->bits + offset / 8;
986 udf_bitmap_check_trunc_free(struct udf_bitmap *bitmap, uint32_t to_trunc)
992 DPRINTF(RESERVE, ("\ttrying to trunc %d bits from bitmap\n", to_trunc));
993 offset = bitmap->max_offset - to_trunc;
996 bpos = bitmap->bits + offset/8;
1012 DPRINTF(RESERVE, ("\tfound %d sequential free bits in bitmap\n", seq_free));
1152 struct udf_bitmap *bitmap;
1219 bitmap = &ump->part_unalloc_bits[vpart_num];
1220 udf_bitmap_allocate(bitmap, is_node, &alloc_num_lb, lmappos);
1229 udf_bitmap_free(bitmap, *lmappos++, 1);
1244 bitmap = &ump->metadata_unalloc_bits;
1245 udf_bitmap_allocate(bitmap, is_node, &alloc_num_lb, lmappos);
1254 udf_bitmap_free(bitmap, *lmappos++, 1);
1302 struct udf_bitmap *bitmap;
1321 /* free space to freed or unallocated space bitmap */
1324 /* first try freed space bitmap */
1325 bitmap = &ump->part_freed_bits[phys_part];
1327 /* if not defined, use unallocated bitmap */
1328 if (bitmap->bits == NULL)
1329 bitmap = &ump->part_unalloc_bits[phys_part];
1332 if (bitmap->bits == NULL)
1336 KASSERT(bitmap->bits);
1338 udf_bitmap_free(bitmap, lb_num, num_lb);
1359 /* free space in the metadata bitmap */
1360 bitmap = &ump->metadata_unalloc_bits;
1361 KASSERT(bitmap->bits);
1364 udf_bitmap_free(bitmap, lb_num, num_lb);
1455 * partition and we can move blocks between a metadata bitmap and its
1465 struct udf_bitmap *bitmap;
1510 bitmap = &ump->metadata_unalloc_bits;
1511 to_trunc = udf_bitmap_check_trunc_free(bitmap, to_trunc);
1516 DPRINTF(RESERVE, ("\ttruncating %"PRIu64" lbs from the metadata bitmap\n",
1519 /* get length of the metadata bitmap node file */
1530 /* 1) update the SBD in the metadata bitmap file */
1531 sbd = (struct space_bitmap_desc *) bitmap->blob;
1534 bitmap->max_offset = udf_rw32(sbd->num_bits);
1542 /* realloc bitmap for better memory usage */
1547 bitmap->blob = (uint8_t *) new_sbd;
1558 /* 2) trunc the metadata bitmap information file, freeing blocks */
1613 /* as per [UDF 2.60/2.2.13.5] : extend bitmap and metadata file(s) */