Lines Matching refs:len
42 u32 len; in create_backing() local
45 len = min(region_len * info.block_size, backing_len); in create_backing()
47 sparse_file_add_data(ext4_sparse_file, ptr, len, region_block); in create_backing()
48 ptr += len; in create_backing()
49 backing_len -= len; in create_backing()
55 static void reserve_indirect_block(struct block_allocation *alloc, int len) in reserve_indirect_block() argument
62 if (advance_blocks(alloc, len)) { in reserve_indirect_block()
63 error("failed to advance %d blocks", len); in reserve_indirect_block()
68 static void reserve_dindirect_block(struct block_allocation *alloc, int len) in reserve_dindirect_block() argument
75 while (len > 0) { in reserve_dindirect_block()
76 int ind_block_len = min((int)aux_info.blocks_per_ind, len); in reserve_dindirect_block()
80 len -= ind_block_len; in reserve_dindirect_block()
85 static void reserve_tindirect_block(struct block_allocation *alloc, int len) in reserve_tindirect_block() argument
92 while (len > 0) { in reserve_tindirect_block()
93 int dind_block_len = min((int)aux_info.blocks_per_dind, len); in reserve_tindirect_block()
97 len -= dind_block_len; in reserve_tindirect_block()
101 static void fill_indirect_block(u32 *ind_block, int len, struct block_allocation *alloc) in fill_indirect_block() argument
104 for (i = 0; i < len; i++) { in fill_indirect_block()
109 static void fill_dindirect_block(u32 *dind_block, int len, struct block_allocation *alloc) in fill_dindirect_block() argument
114 for (i = 0; len > 0; i++) { in fill_dindirect_block()
126 int ind_block_len = min((int)aux_info.blocks_per_ind, len); in fill_dindirect_block()
135 len -= ind_block_len; in fill_dindirect_block()
139 static void fill_tindirect_block(u32 *tind_block, int len, struct block_allocation *alloc) in fill_tindirect_block() argument
144 for (i = 0; len > 0; i++) { in fill_tindirect_block()
156 int dind_block_len = min((int)aux_info.blocks_per_dind, len); in fill_tindirect_block()
160 len -= dind_block_len; in fill_tindirect_block()
169 int len = min(*block_len, EXT4_NDIR_BLOCKS); in inode_attach_direct_blocks() local
172 for (i = 0; i < len; i++) { in inode_attach_direct_blocks()
176 if (advance_blocks(alloc, len)) { in inode_attach_direct_blocks()
177 error("failed to advance %d blocks", len); in inode_attach_direct_blocks()
181 *block_len -= len; in inode_attach_direct_blocks()
192 int len = min(*block_len, aux_info.blocks_per_ind); in inode_attach_indirect_blocks() local
206 fill_indirect_block(ind_block_data, len, alloc); in inode_attach_indirect_blocks()
208 if (advance_blocks(alloc, len)) { in inode_attach_indirect_blocks()
209 error("failed to advance %d blocks", len); in inode_attach_indirect_blocks()
213 *block_len -= len; in inode_attach_indirect_blocks()
224 int len = min(*block_len, aux_info.blocks_per_dind); in inode_attach_dindirect_blocks() local
238 fill_dindirect_block(dind_block_data, len, alloc); in inode_attach_dindirect_blocks()
240 if (advance_blocks(alloc, len)) { in inode_attach_dindirect_blocks()
241 error("failed to advance %d blocks", len); in inode_attach_dindirect_blocks()
245 *block_len -= len; in inode_attach_dindirect_blocks()
256 int len = min(*block_len, aux_info.blocks_per_tind); in inode_attach_tindirect_blocks() local
270 fill_tindirect_block(tind_block_data, len, alloc); in inode_attach_tindirect_blocks()
272 if (advance_blocks(alloc, len)) { in inode_attach_tindirect_blocks()
273 error("failed to advance %d blocks", len); in inode_attach_tindirect_blocks()
277 *block_len -= len; in inode_attach_tindirect_blocks()
281 static void reserve_all_indirect_blocks(struct block_allocation *alloc, u32 len) in reserve_all_indirect_blocks() argument
283 if (len <= EXT4_NDIR_BLOCKS) in reserve_all_indirect_blocks()
286 len -= EXT4_NDIR_BLOCKS; in reserve_all_indirect_blocks()
289 u32 ind_block_len = min(aux_info.blocks_per_ind, len); in reserve_all_indirect_blocks()
292 len -= ind_block_len; in reserve_all_indirect_blocks()
293 if (len == 0) in reserve_all_indirect_blocks()
296 u32 dind_block_len = min(aux_info.blocks_per_dind, len); in reserve_all_indirect_blocks()
299 len -= dind_block_len; in reserve_all_indirect_blocks()
300 if (len == 0) in reserve_all_indirect_blocks()
303 u32 tind_block_len = min(aux_info.blocks_per_tind, len); in reserve_all_indirect_blocks()
306 len -= tind_block_len; in reserve_all_indirect_blocks()
307 if (len == 0) in reserve_all_indirect_blocks()
310 error("%d blocks remaining", len); in reserve_all_indirect_blocks()
313 static u32 indirect_blocks_needed(u32 len) in indirect_blocks_needed() argument
317 if (len <= EXT4_NDIR_BLOCKS) in indirect_blocks_needed()
320 len -= EXT4_NDIR_BLOCKS; in indirect_blocks_needed()
323 ind += DIV_ROUND_UP(len, aux_info.blocks_per_ind); in indirect_blocks_needed()
325 if (len <= aux_info.blocks_per_ind) in indirect_blocks_needed()
328 len -= aux_info.blocks_per_ind; in indirect_blocks_needed()
330 ind += DIV_ROUND_UP(len, aux_info.blocks_per_dind); in indirect_blocks_needed()
332 if (len <= aux_info.blocks_per_dind) in indirect_blocks_needed()
335 len -= aux_info.blocks_per_dind; in indirect_blocks_needed()
337 ind += DIV_ROUND_UP(len, aux_info.blocks_per_tind); in indirect_blocks_needed()
339 if (len <= aux_info.blocks_per_tind) in indirect_blocks_needed()
403 void inode_allocate_indirect(struct ext4_inode *inode, unsigned long len) in inode_allocate_indirect() argument
406 u32 block_len = DIV_ROUND_UP(len, info.block_size); in inode_allocate_indirect()
411 error("failed to allocate extents for %lu bytes", len); in inode_allocate_indirect()
423 inode->i_size_lo = len; in inode_allocate_indirect()
488 u8 *inode_allocate_data_indirect(struct ext4_inode *inode, unsigned long len, in inode_allocate_data_indirect() argument
492 u32 block_len = DIV_ROUND_UP(len, info.block_size); in inode_allocate_data_indirect()
497 error("failed to allocate extents for %lu bytes", len); in inode_allocate_data_indirect()