Changeset ae3d4f8 in mainline for uspace/lib/ext4/libext4_balloc.c


Ignore:
Timestamp:
2011-11-20T08:35:56Z (14 years ago)
Author:
Frantisek Princ <frantisek.princ@…>
Branches:
lfn, master, serial, ticket/834-toolchain-update, topic/msim-upgrade, topic/simplify-dev-export
Children:
fe27eb4
Parents:
528e5b3
Message:

superblock update after block (de)allocation

File:
1 edited

Legend:

Unmodified
Added
Removed
  • uspace/lib/ext4/libext4_balloc.c

    r528e5b3 rae3d4f8  
    117117        uint32_t block_size = ext4_superblock_get_block_size(fs->superblock);
    118118
     119        // Update superblock free blocks count
     120        uint32_t sb_free_blocks = ext4_superblock_get_free_blocks_count(fs->superblock);
     121        sb_free_blocks--;
     122        ext4_superblock_set_free_blocks_count(fs->superblock, sb_free_blocks);
     123
     124        // Update inode blocks count
    119125        uint64_t ino_blocks = ext4_inode_get_blocks_count(fs->superblock, inode_ref->inode);
    120126        ino_blocks -= block_size / EXT4_INODE_BLOCK_SIZE;
     
    122128        inode_ref->dirty = true;
    123129
     130        // Update block group free blocks count
    124131        uint32_t free_blocks = ext4_block_group_get_free_blocks_count(bg_ref->block_group);
    125132        free_blocks++;
    126133        ext4_block_group_set_free_blocks_count(bg_ref->block_group, free_blocks);
    127134        bg_ref->dirty = true;
    128 
    129         // TODO change free blocks count in superblock
    130135
    131136        rc = ext4_filesystem_put_block_group_ref(bg_ref);
     
    444449        uint32_t block_size = ext4_superblock_get_block_size(fs->superblock);
    445450
    446         // TODO decrement superblock free blocks count
    447         //uint32_t sb_free_blocks = ext4_superblock_get_free_blocks_count(sb);
    448         //sb_free_blocks--;
    449         //ext4_superblock_set_free_blocks_count(sb, sb_free_blocks);
    450 
     451        // Update superblock free blocks count
     452        uint32_t sb_free_blocks = ext4_superblock_get_free_blocks_count(fs->superblock);
     453        sb_free_blocks--;
     454        ext4_superblock_set_free_blocks_count(fs->superblock, sb_free_blocks);
     455
     456        // Update inode blocks (different block size!) count
    451457        uint64_t ino_blocks = ext4_inode_get_blocks_count(fs->superblock, inode_ref->inode);
    452458        ino_blocks += block_size / EXT4_INODE_BLOCK_SIZE;
     
    454460        inode_ref->dirty = true;
    455461
     462        // Update block group free blocks count
    456463        uint32_t bg_free_blocks = ext4_block_group_get_free_blocks_count(bg_ref->block_group);
    457464        bg_free_blocks--;
Note: See TracChangeset for help on using the changeset viewer.