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
|
* 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>
|
2002-01-03 Theodore Tso <tytso@mit.edu>
|
||||||
|
|
||||||
* dir_iterate.c (ext2fs_dir_iterate2, ext2fs_process_dir_block):
|
* dir_iterate.c (ext2fs_dir_iterate2, ext2fs_process_dir_block):
|
||||||
|
|
|
@ -15,7 +15,8 @@
|
||||||
#include "ext2_fs.h"
|
#include "ext2_fs.h"
|
||||||
#include "ext2fs.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);
|
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
|
else
|
||||||
ext2fs_unmark_inode_bitmap(fs->inode_map, ino);
|
ext2fs_unmark_inode_bitmap(fs->inode_map, ino);
|
||||||
fs->group_desc[group].bg_free_inodes_count -= inuse;
|
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;
|
fs->super->s_free_inodes_count -= inuse;
|
||||||
ext2fs_mark_super_dirty(fs);
|
ext2fs_mark_super_dirty(fs);
|
||||||
ext2fs_mark_ib_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)
|
void ext2fs_block_alloc_stats(ext2_filsys fs, blk_t blk, int inuse)
|
||||||
{
|
{
|
||||||
int group = ext2fs_group_of_blk(fs, blk);
|
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 */
|
/* alloc_stats.c */
|
||||||
void ext2fs_inode_alloc_stats(ext2_filsys fs, ext2_ino_t ino, int inuse);
|
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);
|
void ext2fs_block_alloc_stats(ext2_filsys fs, blk_t blk, int inuse);
|
||||||
|
|
||||||
/* alloc_tables.c */
|
/* alloc_tables.c */
|
||||||
|
|
|
@ -130,7 +130,7 @@ errcode_t ext2fs_mkdir(ext2_filsys fs, ext2_ino_t parent, ext2_ino_t inum,
|
||||||
* Update accounting....
|
* Update accounting....
|
||||||
*/
|
*/
|
||||||
ext2fs_block_alloc_stats(fs, blk, +1);
|
ext2fs_block_alloc_stats(fs, blk, +1);
|
||||||
ext2fs_inode_alloc_stats(fs, ino, +1);
|
ext2fs_inode_alloc_stats2(fs, ino, +1, 1);
|
||||||
|
|
||||||
cleanup:
|
cleanup:
|
||||||
if (block)
|
if (block)
|
||||||
|
|
Loading…
Reference in New Issue