mirror of https://github.com/vitalif/e2fsprogs
Fix bug where ext2fs_mkdir wasn't correctly bumping the number of
directories in use in a bloock group.bitmap-optimize
parent
31a20a34da
commit
7f961d424b
|
@ -2,6 +2,16 @@
|
|||
|
||||
* Release of E2fsprogs 1.26
|
||||
|
||||
2002-02-03 Theodore Tso <tytso@valinux.com>
|
||||
|
||||
* mkdir.c (ext2fs_mkdir): Change to use ext2fs_inode_alloc_stats2
|
||||
so that the number of directories in use is adjusted
|
||||
appropriately.
|
||||
|
||||
* alloc_stats.c (ext2fs_inode_alloc_stats2): Add new function
|
||||
which optionally will modify the number of directories
|
||||
count.
|
||||
|
||||
2002-01-03 Theodore Tso <tytso@mit.edu>
|
||||
|
||||
* dir_iterate.c (ext2fs_dir_iterate2, ext2fs_process_dir_block):
|
||||
|
|
|
@ -15,7 +15,8 @@
|
|||
#include "ext2_fs.h"
|
||||
#include "ext2fs.h"
|
||||
|
||||
void ext2fs_inode_alloc_stats(ext2_filsys fs, ext2_ino_t ino, int inuse)
|
||||
void ext2fs_inode_alloc_stats2(ext2_filsys fs, ext2_ino_t ino,
|
||||
int inuse, int isdir)
|
||||
{
|
||||
int group = ext2fs_group_of_ino(fs, ino);
|
||||
|
||||
|
@ -24,11 +25,18 @@ void ext2fs_inode_alloc_stats(ext2_filsys fs, ext2_ino_t ino, int inuse)
|
|||
else
|
||||
ext2fs_unmark_inode_bitmap(fs->inode_map, ino);
|
||||
fs->group_desc[group].bg_free_inodes_count -= inuse;
|
||||
if (isdir)
|
||||
fs->group_desc[group].bg_used_dirs_count += inuse;
|
||||
fs->super->s_free_inodes_count -= inuse;
|
||||
ext2fs_mark_super_dirty(fs);
|
||||
ext2fs_mark_ib_dirty(fs);
|
||||
}
|
||||
|
||||
void ext2fs_inode_alloc_stats(ext2_filsys fs, ext2_ino_t ino, int inuse)
|
||||
{
|
||||
ext2fs_inode_alloc_stats2(fs, ino, inuse, 0);
|
||||
}
|
||||
|
||||
void ext2fs_block_alloc_stats(ext2_filsys fs, blk_t blk, int inuse)
|
||||
{
|
||||
int group = ext2fs_group_of_blk(fs, blk);
|
||||
|
|
|
@ -445,6 +445,8 @@ extern errcode_t ext2fs_alloc_block(ext2_filsys fs, blk_t goal,
|
|||
|
||||
/* alloc_stats.c */
|
||||
void ext2fs_inode_alloc_stats(ext2_filsys fs, ext2_ino_t ino, int inuse);
|
||||
void ext2fs_inode_alloc_stats2(ext2_filsys fs, ext2_ino_t ino,
|
||||
int inuse, int isdir);
|
||||
void ext2fs_block_alloc_stats(ext2_filsys fs, blk_t blk, int inuse);
|
||||
|
||||
/* alloc_tables.c */
|
||||
|
|
|
@ -130,7 +130,7 @@ errcode_t ext2fs_mkdir(ext2_filsys fs, ext2_ino_t parent, ext2_ino_t inum,
|
|||
* Update accounting....
|
||||
*/
|
||||
ext2fs_block_alloc_stats(fs, blk, +1);
|
||||
ext2fs_inode_alloc_stats(fs, ino, +1);
|
||||
ext2fs_inode_alloc_stats2(fs, ino, +1, 1);
|
||||
|
||||
cleanup:
|
||||
if (block)
|
||||
|
|
Loading…
Reference in New Issue