Ignore:
File:
1 edited

Legend:

Unmodified
Added
Removed
  • uspace/lib/ext4/src/ialloc.c

    r6ea5e7a r09ab0a9a  
    176176errno_t ext4_ialloc_alloc_inode(ext4_filesystem_t *fs, uint32_t *index, bool is_dir)
    177177{
    178         int pick_first_free = 0;
    179178        ext4_superblock_t *sb = fs->superblock;
    180         uint32_t bgid;
    181         uint32_t sb_free_inodes;
    182         uint32_t avg_free_inodes;
    183         uint32_t const bg_count = ext4_superblock_get_block_group_count(sb);
    184 
    185 retry:
    186 
    187         bgid = 0;
    188         sb_free_inodes = ext4_superblock_get_free_inodes_count(sb);
    189         avg_free_inodes = sb_free_inodes / bg_count;
     179
     180        uint32_t bgid = 0;
     181        uint32_t bg_count = ext4_superblock_get_block_group_count(sb);
     182        uint32_t sb_free_inodes = ext4_superblock_get_free_inodes_count(sb);
     183        uint32_t avg_free_inodes = sb_free_inodes / bg_count;
    190184
    191185        /* Try to find free i-node in all block groups */
     
    216210                 * blocks.
    217211                 */
    218                 if (((free_inodes >= avg_free_inodes) ||
    219                     (bgid == bg_count - 1) || pick_first_free) && (free_blocks > 0)) {
     212                if (((free_inodes >= avg_free_inodes) || (bgid == bg_count - 1)) &&
     213                    (free_blocks > 0)) {
    220214                        /* Load block with bitmap */
    221215                        uint32_t bitmap_block_addr = ext4_block_group_get_inode_bitmap(
     
    313307        }
    314308
    315         /* Try again with less strict conditions */
    316         if (pick_first_free == 0) {
    317                 pick_first_free = 1;
    318                 goto retry;
    319         }
    320 
    321309        return ENOSPC;
    322310}
Note: See TracChangeset for help on using the changeset viewer.