Lines Matching refs:len

120 			   reg->block, reg->block + reg->len - 1, reg->len)
139 if (reg->len == 1) {
142 fprintf(f, "%d-%d", reg->block, reg->block + reg->len - 1);
150 u32 block, u32 len, int bg_num)
155 reg->len = len;
239 if (bg->chunks[i].len >= num_blocks && bg->chunks[i].block <= block) {
242 bg->chunks[i].len -= num_blocks;
243 } else if (bg->chunks[i].block + bg->chunks[i].len - 1 == block + num_blocks) {
244 bg->chunks[i].len -= num_blocks;
251 /* Reduces an existing allocation by len blocks by return the last blocks
254 void reduce_allocation(struct block_allocation *alloc, u32 len)
256 while (len) {
260 if (last_reg->len > len) {
261 free_blocks(bg, last_reg->block + last_reg->len - bg->first_block - 1, len);
262 last_reg->len -= len;
263 len = 0;
266 free_blocks(bg, last_reg->block + last_reg->len - bg->first_block - 1, last_reg->len);
267 len -= last_reg->len;
365 static struct region *ext4_allocate_best_fit_partial(u32 len)
378 hole_start = bgs[i].chunks[j-1].block + bgs[i].chunks[j-1].len;
380 if (hole_size == len) {
387 } else if (hole_size > len && (found_allocate_len == 0 || (found_allocate_len > hole_size))) {
405 error("failed to allocate %u blocks, out of space?", len);
408 if (found_allocate_len > len) found_allocate_len = len;
411 bgs[found_bg].chunks[found_prev_chunk].len += found_allocate_len;
422 reg->len = found_allocate_len;
429 static struct region *ext4_allocate_best_fit(u32 len)
435 while (len > 0) {
436 reg = ext4_allocate_best_fit_partial(len);
449 len -= reg->len;
455 /* Allocate len blocks. The blocks may be spread across multiple block groups,
462 struct block_allocation *allocate_blocks(u32 len)
464 struct region *reg = ext4_allocate_best_fit(len);
497 i += reg->len;
509 if (block < reg->len)
511 block -= reg->len;
522 if (block < reg->len)
524 block -= reg->len;
531 void get_region(struct block_allocation *alloc, u32 *block, u32 *len)
534 *len = alloc->list.iter->len - alloc->list.partial_iter;
561 static struct region *do_split_allocation(struct block_allocation *alloc, u32 len)
567 while (reg && len >= reg->len) {
568 len -= reg->len;
572 if (reg == NULL && len > 0)
575 if (len > 0) {
579 new->block = reg->block + len;
580 new->len = reg->len - len;
585 reg->len = len;
598 static struct region *split_allocation(struct block_allocation *alloc, u32 len)
603 /* Then split off len blocks */
604 struct region *middle = do_split_allocation(alloc, len);
633 if (reg->len > list->partial_iter + blocks) {
638 blocks -= (reg->len - list->partial_iter);
660 int append_oob_allocation(struct block_allocation *alloc, u32 len)
662 struct region *reg = ext4_allocate_best_fit(len);
665 error("failed to allocate %d blocks", len);
716 /* Mark the first len inodes in a block group as used */
812 bgs[bg].chunks[chunk_count].len = size;
824 if (reserve_blocks(&bgs[reg->bg], reg->bg, reg->block - bgs[reg->bg].first_block, reg->len) < 0) {