Whamcloud - gitweb
b=19625
[fs/lustre-release.git] / ldiskfs / kernel_patches / patches / ext4-alloc-policy-2.6-sles11.patch
index a39fb88..b5febbf 100644 (file)
@@ -1,8 +1,8 @@
 Index: linux-2.6.27.21-0.1/fs/ext4/ialloc.c
 ===================================================================
---- linux-2.6.27.21-0.1.orig/fs/ext4/ialloc.c
-+++ linux-2.6.27.21-0.1/fs/ext4/ialloc.c
-@@ -1005,6 +1005,36 @@ fail_drop:
+--- linux-2.6.27.21-0.1.orig/fs/ext4/ialloc.c  2009-07-07 14:47:04.000000000 +0530
++++ linux-2.6.27.21-0.1/fs/ext4/ialloc.c       2009-07-07 15:04:02.000000000 +0530
+@@ -953,6 +953,36 @@
        return ERR_PTR(err);
  }
  
@@ -41,24 +41,10 @@ Index: linux-2.6.27.21-0.1/fs/ext4/ialloc.c
  {
 Index: linux-2.6.27.21-0.1/fs/ext4/namei.c
 ===================================================================
---- linux-2.6.27.21-0.1.orig/fs/ext4/namei.c
-+++ linux-2.6.27.21-0.1/fs/ext4/namei.c
-@@ -151,14 +151,24 @@ struct dx_map_entry
-       u16 size;
- };
-+/*
-+ * dentry_param used by ext4_new_inode_wantedi()
-+ */
- #define LVFS_DENTRY_PARAM_MAGIC               20070216UL
- struct lvfs_dentry_params
- {
--      unsigned long   p_inum;
--      void        *p_ptr;
--      u32          magic;
-+      unsigned long   ldp_inum;
-+      long            ldp_flags;
-+      u32             ldp_magic;
+--- linux-2.6.27.21-0.1.orig/fs/ext4/namei.c   2009-07-07 14:47:05.000000000 +0530
++++ linux-2.6.27.21-0.1/fs/ext4/namei.c        2009-07-07 15:04:21.000000000 +0530
+@@ -161,6 +161,12 @@
+       u32             ldp_magic;
  };
  
 +/* Only use the least 3 bits of ldp_flags for goal policy */
@@ -67,35 +53,35 @@ Index: linux-2.6.27.21-0.1/fs/ext4/namei.c
 +      DP_LASTGROUP_REVERSE = 1,
 +} dp_policy_t;
 +
-+
  static inline ext4_lblk_t dx_get_block(struct dx_entry *entry);
  static void dx_set_block(struct dx_entry *entry, ext4_lblk_t value);
  static inline unsigned dx_get_hash(struct dx_entry *entry);
-@@ -1770,8 +1780,13 @@ static struct inode * ext4_new_inode_wan
+@@ -1771,8 +1777,14 @@
        if (dentry->d_fsdata != NULL) {
                struct lvfs_dentry_params *param = dentry->d_fsdata;
  
--              if (param->magic == LVFS_DENTRY_PARAM_MAGIC)
--                      inum = param->p_inum;
+-              if (param->ldp_magic == LVFS_DENTRY_PARAM_MAGIC)
+-                      inum = param->ldp_inum;
 +              if (param->ldp_magic == LVFS_DENTRY_PARAM_MAGIC) {
 +                      if ((dp_policy_t)(param->ldp_flags & 0x7) ==
 +                          DP_LASTGROUP_REVERSE)
-+                              inum = ext4_find_reverse(dir->i_sb);
-+                        else /* DP_GOAL_POLICY */
++                              inum = ext4_find_reverse(sb);
++                      else /* DP_GOAL_POLICY */
 +                              inum = param->ldp_inum;
-+                }
++              }
++
        }
-       return ext4_new_inode(handle, dir, mode, inum);
+       return inum;
  }
 Index: linux-2.6.27.21-0.1/fs/ext4/ext4.h
 ===================================================================
---- linux-2.6.27.21-0.1.orig/fs/ext4/ext4.h
-+++ linux-2.6.27.21-0.1/fs/ext4/ext4.h
-@@ -1089,6 +1089,7 @@ extern int ext4fs_dirhash(const char *na
- /* ialloc.c */
- extern struct inode * ext4_new_inode(handle_t *, struct inode *, int,
-                                    unsigned long);
-+extern unsigned long ext4_find_reverse(struct super_block *);
+--- linux-2.6.27.21-0.1.orig/fs/ext4/ext4.h    2009-07-07 14:47:22.000000000 +0530
++++ linux-2.6.27.21-0.1/fs/ext4/ext4.h 2009-07-07 15:04:02.000000000 +0530
+@@ -1101,6 +1101,7 @@
+                                  EXT4_SB(dir->i_sb)->s_inode_goal);
+ }
  extern void ext4_free_inode(handle_t *, struct inode *);
++extern unsigned long ext4_find_reverse(struct super_block *);
  extern struct inode * ext4_orphan_get(struct super_block *, unsigned long);
  extern unsigned long ext4_count_free_inodes(struct super_block *);
+ extern unsigned long ext4_count_dirs(struct super_block *);