Changes in uspace/lib/ext4/libext4_ialloc.c [8a45707d:38542dc] in mainline
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
uspace/lib/ext4/libext4_ialloc.c
r8a45707d r38542dc 195 195 uint32_t used_dirs = ext4_block_group_get_used_dirs_count(bg, sb); 196 196 197 /* 198 * Check if this block group is a good candidate 199 * for allocation. 200 * 201 * The criterion is based on the average number 202 * of free inodes, unless we examine the last block 203 * group. In that case the last block group might 204 * have less than the average number of free inodes, 205 * but it still needs to be taken as a candidate 206 * because the previous block groups have zero free 207 * blocks. 208 */ 209 if (((free_inodes >= avg_free_inodes) || (bgid == bg_count - 1)) && 210 (free_blocks > 0)) { 197 /* Check if this block group is good candidate for allocation */ 198 if ((free_inodes >= avg_free_inodes) && (free_blocks > 0)) { 211 199 /* Load block with bitmap */ 212 200 uint32_t bitmap_block_addr = ext4_block_group_get_inode_bitmap( … … 216 204 rc = block_get(&bitmap_block, fs->device, bitmap_block_addr, 217 205 BLOCK_FLAGS_NONE); 218 if (rc != EOK) { 219 ext4_filesystem_put_block_group_ref(bg_ref); 206 if (rc != EOK) 220 207 return rc; 221 }222 208 223 209 /* Try to allocate i-node in the bitmap */ … … 229 215 /* Block group has not any free i-node */ 230 216 if (rc == ENOSPC) { 231 rc = block_put(bitmap_block); 232 if (rc != EOK) { 233 ext4_filesystem_put_block_group_ref(bg_ref); 234 return rc; 235 } 236 237 rc = ext4_filesystem_put_block_group_ref(bg_ref); 238 if (rc != EOK) 239 return rc; 240 241 bgid++; 217 block_put(bitmap_block); 218 ext4_filesystem_put_block_group_ref(bg_ref); 242 219 continue; 243 220 } … … 247 224 248 225 rc = block_put(bitmap_block); 249 if (rc != EOK) { 250 ext4_filesystem_put_block_group_ref(bg_ref); 226 if (rc != EOK) 251 227 return rc; 252 }253 228 254 229 /* Modify filesystem counters */ … … 297 272 298 273 /* Block group not modified, put it and jump to the next block group */ 299 rc = ext4_filesystem_put_block_group_ref(bg_ref); 300 if (rc != EOK) 301 return rc; 302 274 ext4_filesystem_put_block_group_ref(bg_ref); 303 275 ++bgid; 304 276 }
Note:
See TracChangeset
for help on using the changeset viewer.