Linux Headquarters
[ Register ]
[ About us ] [ Home Page ]

Advertisement
[ Kernel ] [ Documentation ] [ Links ] [ Books ]

Advertisement

Kernel v2.6.24 /fs/ext2/ialloc.c

Filename:/fs/ext2/ialloc.c
Lines Added:10
Lines Deleted:21
Also changed in: (Previous) 2.6.24-rc8  2.6.24-rc7  2.6.24-rc6  2.6.24-rc5  2.6.24-rc4  2.6.24-rc3 
(Following) 2.6.25-git3  2.6.25-git4  2.6.25-git5  2.6.25-git6  2.6.25-git7  2.6.25-git8 

Location
[  2.6.24
  [  fs
    [  ext2
       o  ialloc.c

Patch

diff --git a/fs/ext2/ialloc.c b/fs/ext2/ialloc.c
index 2cb545b..5deb8b7 100644
--- a/fs/ext2/ialloc.c
+++ b/fs/ext2/ialloc.c
@@ -177,7 +177,6 @@ static void ext2_preread_inode(struct inode *inode)
    unsigned long block_group;
    unsigned long offset;
    unsigned long block;
-   struct buffer_head *bh;
    struct ext2_group_desc * gdp;
    struct backing_dev_info *bdi;
 
@@ -188,7 +187,7 @@ static void ext2_preread_inode(struct inode *inode)
       return;
 
    block_group = (inode->i_ino - 1) / EXT2_INODES_PER_GROUP(inode->i_sb);
-   gdp = ext2_get_group_desc(inode->i_sb, block_group, &bh);
+   gdp = ext2_get_group_desc(inode->i_sb, block_group, NULL);
    if (gdp == NULL)
       return;
 
@@ -217,11 +216,10 @@ static int find_group_dir(struct super_block *sb, struct inode *parent)
    int ngroups = EXT2_SB(sb)->s_groups_count;
    int avefreei = ext2_count_free_inodes(sb) / ngroups;
    struct ext2_group_desc *desc, *best_desc = NULL;
-   struct buffer_head *bh, *best_bh = NULL;
    int group, best_group = -1;
 
    for (group = 0; group < ngroups; group++) {
-      desc = ext2_get_group_desc (sb, group, &bh);
+      desc = ext2_get_group_desc (sb, group, NULL);
       if (!desc || !desc->bg_free_inodes_count)
          continue;
       if (le16_to_cpu(desc->bg_free_inodes_count) < avefreei)
@@ -231,7 +229,6 @@ static int find_group_dir(struct super_block *sb, struct inode *parent)
            le16_to_cpu(best_desc->bg_free_blocks_count))) {
          best_group = group;
          best_desc = desc;
-         best_bh = bh;
       }
    }
    if (!best_desc)
@@ -284,7 +281,6 @@ static int find_group_orlov(struct super_block *sb, struct inode *parent)
    int max_debt, max_dirs, min_blocks, min_inodes;
    int group = -1, i;
    struct ext2_group_desc *desc;
-   struct buffer_head *bh;
 
    freei = percpu_counter_read_positive(&sbi->s_freeinodes_counter);
    avefreei = freei / ngroups;
@@ -295,7 +291,6 @@ static int find_group_orlov(struct super_block *sb, struct inode *parent)
    if ((parent == sb->s_root->d_inode) ||
        (EXT2_I(parent)->i_flags & EXT2_TOPDIR_FL)) {
       struct ext2_group_desc *best_desc = NULL;
-      struct buffer_head *best_bh = NULL;
       int best_ndir = inodes_per_group;
       int best_group = -1;
 
@@ -303,7 +298,7 @@ static int find_group_orlov(struct super_block *sb, struct inode *parent)
       parent_group = (unsigned)group % ngroups;
       for (i = 0; i < ngroups; i++) {
          group = (parent_group + i) % ngroups;
-         desc = ext2_get_group_desc (sb, group, &bh);
+         desc = ext2_get_group_desc (sb, group, NULL);
          if (!desc || !desc->bg_free_inodes_count)
             continue;
          if (le16_to_cpu(desc->bg_used_dirs_count) >= best_ndir)
@@ -315,11 +310,9 @@ static int find_group_orlov(struct super_block *sb, struct inode *parent)
          best_group = group;
          best_ndir = le16_to_cpu(desc->bg_used_dirs_count);
          best_desc = desc;
-         best_bh = bh;
       }
       if (best_group >= 0) {
          desc = best_desc;
-         bh = best_bh;
          group = best_group;
          goto found;
       }
@@ -345,7 +338,7 @@ static int find_group_orlov(struct super_block *sb, struct inode *parent)
 
    for (i = 0; i < ngroups; i++) {
       group = (parent_group + i) % ngroups;
-      desc = ext2_get_group_desc (sb, group, &bh);
+      desc = ext2_get_group_desc (sb, group, NULL);
       if (!desc || !desc->bg_free_inodes_count)
          continue;
       if (sbi->s_debts[group] >= max_debt)
@@ -362,7 +355,7 @@ static int find_group_orlov(struct super_block *sb, struct inode *parent)
 fallback:
    for (i = 0; i < ngroups; i++) {
       group = (parent_group + i) % ngroups;
-      desc = ext2_get_group_desc (sb, group, &bh);
+      desc = ext2_get_group_desc (sb, group, NULL);
       if (!desc || !desc->bg_free_inodes_count)
          continue;
       if (le16_to_cpu(desc->bg_free_inodes_count) >= avefreei)
@@ -389,14 +382,13 @@ static int find_group_other(struct super_block *sb, struct inode *parent)
    int parent_group = EXT2_I(parent)->i_block_group;
    int ngroups = EXT2_SB(sb)->s_groups_count;
    struct ext2_group_desc *desc;
-   struct buffer_head *bh;
    int group, i;
 
    /*
     * Try to place the inode in its parent directory
     */
    group = parent_group;
-   desc = ext2_get_group_desc (sb, group, &bh);
+   desc = ext2_get_group_desc (sb, group, NULL);
    if (desc && le16_to_cpu(desc->bg_free_inodes_count) &&
          le16_to_cpu(desc->bg_free_blocks_count))
       goto found;
@@ -420,7 +412,7 @@ static int find_group_other(struct super_block *sb, struct inode *parent)
       group += i;
       if (group >= ngroups)
          group -= ngroups;
-      desc = ext2_get_group_desc (sb, group, &bh);
+      desc = ext2_get_group_desc (sb, group, NULL);
       if (desc && le16_to_cpu(desc->bg_free_inodes_count) &&
             le16_to_cpu(desc->bg_free_blocks_count))
          goto found;
@@ -434,7 +426,7 @@ static int find_group_other(struct super_block *sb, struct inode *parent)
    for (i = 0; i < ngroups; i++) {
       if (++group >= ngroups)
          group = 0;
-      desc = ext2_get_group_desc (sb, group, &bh);
+      desc = ext2_get_group_desc (sb, group, NULL);
       if (desc && le16_to_cpu(desc->bg_free_inodes_count))
          goto found;
    }
@@ -542,7 +534,7 @@ got:
       goto fail;
    }
 
-   percpu_counter_mod(&sbi->s_freeinodes_counter, -1);
+   percpu_counter_add(&sbi->s_freeinodes_counter, -1);
    if (S_ISDIR(mode))
       percpu_counter_inc(&sbi->s_dirs_counter);
 
@@ -589,11 +581,8 @@ got:
    ei->i_file_acl = 0;
    ei->i_dir_acl = 0;
    ei->i_dtime = 0;
+   ei->i_block_alloc_info = NULL;
    ei->i_block_group = group;
-   ei->i_next_alloc_block = 0;
-   ei->i_next_alloc_goal = 0;
-   ei->i_prealloc_block = 0;
-   ei->i_prealloc_count = 0;
    ei->i_dir_start_lookup = 0;
    ei->i_state = EXT2_STATE_NEW;
    ext2_set_inode_flags(inode);


Comments: webmaster (at) linuxhq.com.
Advertising: banners (at) linuxhq.com.
Compilation ©1998-2008 Linux Headquarters, Inc.