Lines Matching full:sb
30 static int read_block_bitmap(struct super_block *sb, in read_block_bitmap() argument
40 loc.partitionReferenceNum = UDF_SB(sb)->s_partition; in read_block_bitmap()
42 bh = sb_bread(sb, udf_get_lb_pblock(sb, &loc, block)); in read_block_bitmap()
48 max_bits = sb->s_blocksize * 8; in read_block_bitmap()
58 (bitmap->s_nr_groups >> (sb->s_blocksize_bits + 3)) + 2) in read_block_bitmap()
72 static int __load_block_bitmap(struct super_block *sb, in __load_block_bitmap() argument
87 retval = read_block_bitmap(sb, bitmap, block_group, block_group); in __load_block_bitmap()
94 static inline int load_block_bitmap(struct super_block *sb, in load_block_bitmap() argument
100 slot = __load_block_bitmap(sb, bitmap, block_group); in load_block_bitmap()
111 static void udf_add_free_space(struct super_block *sb, u16 partition, u32 cnt) in udf_add_free_space() argument
113 struct udf_sb_info *sbi = UDF_SB(sb); in udf_add_free_space()
121 udf_updated_lvid(sb); in udf_add_free_space()
124 static void udf_bitmap_free_blocks(struct super_block *sb, in udf_bitmap_free_blocks() argument
130 struct udf_sb_info *sbi = UDF_SB(sb); in udf_bitmap_free_blocks()
156 block_group = block >> (sb->s_blocksize_bits + 3); in udf_bitmap_free_blocks()
157 bit = block % (sb->s_blocksize << 3); in udf_bitmap_free_blocks()
162 if (bit + count > (sb->s_blocksize << 3)) { in udf_bitmap_free_blocks()
163 overflow = bit + count - (sb->s_blocksize << 3); in udf_bitmap_free_blocks()
166 bitmap_nr = load_block_bitmap(sb, bitmap, block_group); in udf_bitmap_free_blocks()
178 udf_add_free_space(sb, sbi->s_partition, count); in udf_bitmap_free_blocks()
190 static int udf_bitmap_prealloc_blocks(struct super_block *sb, in udf_bitmap_prealloc_blocks() argument
195 struct udf_sb_info *sbi = UDF_SB(sb); in udf_bitmap_prealloc_blocks()
212 block_group = block >> (sb->s_blocksize_bits + 3); in udf_bitmap_prealloc_blocks()
214 bitmap_nr = load_block_bitmap(sb, bitmap, block_group); in udf_bitmap_prealloc_blocks()
219 bit = block % (sb->s_blocksize << 3); in udf_bitmap_prealloc_blocks()
221 while (bit < (sb->s_blocksize << 3) && block_count > 0) { in udf_bitmap_prealloc_blocks()
233 udf_add_free_space(sb, partition, -alloc_count); in udf_bitmap_prealloc_blocks()
238 static udf_pblk_t udf_bitmap_new_block(struct super_block *sb, in udf_bitmap_new_block() argument
242 struct udf_sb_info *sbi = UDF_SB(sb); in udf_bitmap_new_block()
260 block_group = block >> (sb->s_blocksize_bits + 3); in udf_bitmap_new_block()
263 bitmap_nr = load_block_bitmap(sb, bitmap, block_group); in udf_bitmap_new_block()
268 sb->s_blocksize - group_start); in udf_bitmap_new_block()
270 if ((ptr - ((char *)bh->b_data)) < sb->s_blocksize) { in udf_bitmap_new_block()
271 bit = block % (sb->s_blocksize << 3); in udf_bitmap_new_block()
281 sb->s_blocksize - ((bit + 7) >> 3)); in udf_bitmap_new_block()
283 if (newbit < sb->s_blocksize << 3) { in udf_bitmap_new_block()
289 sb->s_blocksize << 3, bit); in udf_bitmap_new_block()
290 if (newbit < sb->s_blocksize << 3) { in udf_bitmap_new_block()
302 bitmap_nr = load_block_bitmap(sb, bitmap, block_group); in udf_bitmap_new_block()
308 sb->s_blocksize - group_start); in udf_bitmap_new_block()
309 if ((ptr - ((char *)bh->b_data)) < sb->s_blocksize) { in udf_bitmap_new_block()
315 sb->s_blocksize << 3, in udf_bitmap_new_block()
317 if (bit < sb->s_blocksize << 3) in udf_bitmap_new_block()
325 if (bit < sb->s_blocksize << 3) in udf_bitmap_new_block()
328 bit = udf_find_next_one_bit(bh->b_data, sb->s_blocksize << 3, in udf_bitmap_new_block()
330 if (bit >= sb->s_blocksize << 3) { in udf_bitmap_new_block()
344 newblock = bit + (block_group << (sb->s_blocksize_bits + 3)) - in udf_bitmap_new_block()
352 udf_err(sb, "bitmap for partition %d corrupted (block %u marked" in udf_bitmap_new_block()
365 udf_add_free_space(sb, partition, -1); in udf_bitmap_new_block()
376 static void udf_table_free_blocks(struct super_block *sb, in udf_table_free_blocks() argument
382 struct udf_sb_info *sbi = UDF_SB(sb); in udf_table_free_blocks()
403 udf_add_free_space(sb, sbi->s_partition, count); in udf_table_free_blocks()
416 (elen >> sb->s_blocksize_bits)) == start)) { in udf_table_free_blocks()
418 (count << sb->s_blocksize_bits)) { in udf_table_free_blocks()
420 sb->s_blocksize_bits); in udf_table_free_blocks()
424 (0x40000000 - sb->s_blocksize); in udf_table_free_blocks()
428 (count << sb->s_blocksize_bits)); in udf_table_free_blocks()
435 (count << sb->s_blocksize_bits)) { in udf_table_free_blocks()
437 sb->s_blocksize_bits); in udf_table_free_blocks()
442 (0x40000000 - sb->s_blocksize); in udf_table_free_blocks()
447 (count << sb->s_blocksize_bits)); in udf_table_free_blocks()
483 (count << sb->s_blocksize_bits); in udf_table_free_blocks()
495 if (epos.offset + (2 * adsize) > sb->s_blocksize) { in udf_table_free_blocks()
501 elen -= sb->s_blocksize; in udf_table_free_blocks()
517 static int udf_table_prealloc_blocks(struct super_block *sb, in udf_table_prealloc_blocks() argument
521 struct udf_sb_info *sbi = UDF_SB(sb); in udf_table_prealloc_blocks()
556 alloc_count = (elen >> sb->s_blocksize_bits); in udf_table_prealloc_blocks()
560 elen -= (alloc_count << sb->s_blocksize_bits); in udf_table_prealloc_blocks()
572 udf_add_free_space(sb, partition, -alloc_count); in udf_table_prealloc_blocks()
577 static udf_pblk_t udf_table_new_block(struct super_block *sb, in udf_table_new_block() argument
581 struct udf_sb_info *sbi = UDF_SB(sb); in udf_table_new_block()
617 (elen >> sb->s_blocksize_bits)) in udf_table_new_block()
621 (elen >> sb->s_blocksize_bits); in udf_table_new_block()
655 goal_elen -= sb->s_blocksize; in udf_table_new_block()
663 udf_add_free_space(sb, partition, -1); in udf_table_new_block()
670 void udf_free_blocks(struct super_block *sb, struct inode *inode, in udf_free_blocks() argument
675 struct udf_part_map *map = &UDF_SB(sb)->s_partmaps[partition]; in udf_free_blocks()
678 udf_bitmap_free_blocks(sb, map->s_uspace.s_bitmap, in udf_free_blocks()
681 udf_table_free_blocks(sb, map->s_uspace.s_table, in udf_free_blocks()
687 ((sector_t)count) << sb->s_blocksize_bits); in udf_free_blocks()
691 inline int udf_prealloc_blocks(struct super_block *sb, in udf_prealloc_blocks() argument
696 struct udf_part_map *map = &UDF_SB(sb)->s_partmaps[partition]; in udf_prealloc_blocks()
700 allocated = udf_bitmap_prealloc_blocks(sb, in udf_prealloc_blocks()
705 allocated = udf_table_prealloc_blocks(sb, in udf_prealloc_blocks()
713 inode_add_bytes(inode, allocated << sb->s_blocksize_bits); in udf_prealloc_blocks()
717 inline udf_pblk_t udf_new_block(struct super_block *sb, in udf_new_block() argument
721 struct udf_part_map *map = &UDF_SB(sb)->s_partmaps[partition]; in udf_new_block()
725 block = udf_bitmap_new_block(sb, in udf_new_block()
729 block = udf_table_new_block(sb, in udf_new_block()
737 inode_add_bytes(inode, sb->s_blocksize); in udf_new_block()