Changeset e5f8762 in mainline for uspace/lib/ext4/libext4_ialloc.c


Ignore:
Timestamp:
2011-11-27T12:16:40Z (12 years ago)
Author:
Frantisek Princ <frantisek.princ@…>
Branches:
lfn, master, serial, ticket/834-toolchain-update, topic/msim-upgrade, topic/simplify-dev-export
Children:
d4d2954
Parents:
5f6cb14
Message:

Fixed bugs in directory removal process

File:
1 edited

Legend:

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

    r5f6cb14 re5f8762  
    3737
    3838#include <errno.h>
     39#include <time.h>
    3940#include "libext4.h"
    4041
     
    9091        }
    9192
     93        time_t now = time(NULL);
     94        ext4_inode_set_deletion_time(inode_ref->inode, (uint32_t)now);
     95        inode_ref->dirty = true;
     96
     97        // if inode is directory, decrement directories count
     98        if (ext4_inode_is_type(fs->superblock, inode_ref->inode, EXT4_INODE_MODE_DIRECTORY)) {
     99                uint32_t bg_used_dirs = ext4_block_group_get_used_dirs_count(
     100                        bg_ref->block_group, fs->superblock);
     101                bg_used_dirs--;
     102                ext4_block_group_set_used_dirs_count(
     103                                bg_ref->block_group, fs->superblock, bg_used_dirs);
     104        }
     105
    92106        // Update superblock free inodes count
    93107        uint32_t sb_free_inodes = ext4_superblock_get_free_inodes_count(fs->superblock);
    94         sb_free_inodes--;
     108        sb_free_inodes++;
    95109        ext4_superblock_set_free_inodes_count(fs->superblock, sb_free_inodes);
    96110
Note: See TracChangeset for help on using the changeset viewer.