16 #include <linux/sched.h>
19 #include <linux/random.h>
45 static struct buffer_head *
49 struct buffer_head *bh =
NULL;
58 "Cannot read inode bitmap - "
59 "block_group = %lu, inode_bitmap = %u",
68 struct buffer_head *bh;
73 "can't get descriptor for group %d", group);
77 spin_lock(sb_bgl_lock(EXT2_SB(sb), group));
81 spin_unlock(sb_bgl_lock(EXT2_SB(sb), group));
83 percpu_counter_dec(&EXT2_SB(sb)->s_dirs_counter);
108 struct buffer_head *bitmap_bh;
125 es = EXT2_SB(sb)->s_es;
131 "reserved or nonexistent inode %lu", ino);
136 bitmap_bh = read_inode_bitmap(sb, block_group);
142 bit, (
void *) bitmap_bh->b_data))
144 "bit already cleared for inode %lu", ino);
146 ext2_release_inode(sb, block_group, is_directory);
166 static void ext2_preread_inode(
struct inode *
inode)
174 bdi = inode->
i_mapping->backing_dev_info;
175 if (bdi_read_congested(bdi))
177 if (bdi_write_congested(bdi))
192 sb_breadahead(inode->
i_sb, block);
205 static int find_group_dir(
struct super_block *sb,
struct inode *parent)
207 int ngroups = EXT2_SB(sb)->s_groups_count;
210 int group, best_group = -1;
212 for (group = 0; group < ngroups; group++) {
256 #define INODE_COST 64
257 #define BLOCK_COST 256
259 static int find_group_orlov(
struct super_block *sb,
struct inode *parent)
261 int parent_group = EXT2_I(parent)->i_block_group;
272 int max_debt, max_dirs, min_blocks, min_inodes;
277 avefreei = freei / ngroups;
279 avefreeb = free_blocks / ngroups;
282 if ((parent == sb->
s_root->d_inode) ||
285 int best_ndir = inodes_per_group;
289 parent_group = (unsigned)group % ngroups;
290 for (
i = 0;
i < ngroups;
i++) {
291 group = (parent_group +
i) % ngroups;
305 if (best_group >= 0) {
318 max_dirs = ndirs / ngroups + inodes_per_group / 16;
319 min_inodes = avefreei - inodes_per_group / 4;
330 for (
i = 0;
i < ngroups;
i++) {
331 group = (parent_group +
i) % ngroups;
335 if (sbi->
s_debts[group] >= max_debt)
347 for (
i = 0;
i < ngroups;
i++) {
348 group = (parent_group +
i) % ngroups;
371 static int find_group_other(
struct super_block *sb,
struct inode *parent)
373 int parent_group = EXT2_I(parent)->i_block_group;
374 int ngroups = EXT2_SB(sb)->s_groups_count;
381 group = parent_group;
396 group = (group + parent->
i_ino) % ngroups;
402 for (i = 1; i < ngroups; i <<= 1) {
404 if (group >= ngroups)
416 group = parent_group;
417 for (i = 0; i < ngroups; i++) {
418 if (++group >= ngroups)
435 struct buffer_head *bitmap_bh =
NULL;
436 struct buffer_head *bh2;
439 struct inode *
inode;
456 group = find_group_dir(sb, dir);
458 group = find_group_orlov(sb, dir);
460 group = find_group_other(sb, dir);
470 bitmap_bh = read_inode_bitmap(sb, group);
477 repeat_in_this_group:
494 ino, bitmap_bh->b_data)) {
503 goto repeat_in_this_group;
522 "reserved inode or inode > inodes count - "
523 "block_group = %d,inode=%lu", group,
524 (
unsigned long) ino);
533 spin_lock(sb_bgl_lock(sbi, group));
543 spin_unlock(sb_bgl_lock(sbi, group));
575 "inode number already in use - inode=%lu",
576 (
unsigned long) ino);
594 mark_inode_dirty(inode);
596 ext2_preread_inode(inode);
624 unsigned long bitmap_count = 0;
625 struct buffer_head *bitmap_bh =
NULL;
627 es = EXT2_SB(sb)->s_es;
628 for (i = 0; i < EXT2_SB(sb)->s_groups_count; i++) {
636 bitmap_bh = read_inode_bitmap(sb, i);
641 printk(
"group %d: stored = %d, counted = %u\n",
646 printk(
"ext2_count_free_inodes: stored = %lu, computed = %lu, %lu\n",
648 percpu_counter_read(&EXT2_SB(sb)->s_freeinodes_counter),
649 desc_count, bitmap_count);
652 for (i = 0; i < EXT2_SB(sb)->s_groups_count; i++) {
665 unsigned long count = 0;
668 for (i = 0; i < EXT2_SB(sb)->s_groups_count; i++) {