Whamcloud - gitweb
b=20581 MDS returns full hash for readdir to decrease hash collision
[fs/lustre-release.git] / ldiskfs / kernel_patches / patches / ext4-lustre-i_version.patch
1 Index: linux-2.6.27.21-0.1/fs/ext4/ext4_i.h
2 ===================================================================
3 --- linux-2.6.27.21-0.1.orig/fs/ext4/ext4_i.h   2009-06-15 06:23:34.000000000 -0400
4 +++ linux-2.6.27.21-0.1/fs/ext4/ext4_i.h        2009-06-15 17:09:59.000000000 -0400
5 @@ -36,6 +36,8 @@ typedef unsigned int ext4_group_t;
6  #define rsv_start rsv_window._rsv_start
7  #define rsv_end rsv_window._rsv_end
8  
9 +#define USE_I_FS_VERSION
10 +
11  /*
12   * storage for cached extent
13   */
14 @@ -138,6 +140,8 @@ struct ext4_inode_info {
15         __u16 i_extra_isize;
16  
17         spinlock_t i_block_reservation_lock;
18 +
19 +       __u64 i_fs_version;
20  };
21  
22  #endif /* _EXT4_I */
23 Index: linux-2.6.27.21-0.1/fs/ext4/ialloc.c
24 ===================================================================
25 --- linux-2.6.27.21-0.1.orig/fs/ext4/ialloc.c   2009-06-15 06:23:34.000000000 -0400
26 +++ linux-2.6.27.21-0.1/fs/ext4/ialloc.c        2009-06-15 16:59:35.000000000 -0400
27 @@ -888,6 +888,7 @@ got:
28         ei->i_file_acl = 0;
29         ei->i_dtime = 0;
30         ei->i_block_group = group;
31 +       ei->i_fs_version = 0;
32  
33         ext4_set_inode_flags(inode);
34         if (IS_DIRSYNC(inode))
35 Index: linux-2.6.27.21-0.1/fs/ext4/inode.c
36 ===================================================================
37 --- linux-2.6.27.21-0.1.orig/fs/ext4/inode.c    2009-06-15 06:23:34.000000000 -0400
38 +++ linux-2.6.27.21-0.1/fs/ext4/inode.c 2009-06-15 17:01:11.000000000 -0400
39 @@ -4201,10 +4201,10 @@ struct inode *ext4_iget(struct super_blo
40         EXT4_INODE_GET_XTIME(i_atime, inode, raw_inode);
41         EXT4_EINODE_GET_XTIME(i_crtime, ei, raw_inode);
42  
43 -       inode->i_version = le32_to_cpu(raw_inode->i_disk_version);
44 +       ei->i_fs_version = le32_to_cpu(raw_inode->i_disk_version);
45         if (EXT4_INODE_SIZE(inode->i_sb) > EXT4_GOOD_OLD_INODE_SIZE) {
46                 if (EXT4_FITS_IN_INODE(raw_inode, ei, i_version_hi))
47 -                       inode->i_version |=
48 +                       ei->i_fs_version |=
49                         (__u64)(le32_to_cpu(raw_inode->i_version_hi)) << 32;
50         }
51  
52 @@ -4383,11 +4383,11 @@ static int ext4_do_update_inode(handle_t
53         } else for (block = 0; block < EXT4_N_BLOCKS; block++)
54                 raw_inode->i_block[block] = ei->i_data[block];
55  
56 -       raw_inode->i_disk_version = cpu_to_le32(inode->i_version);
57 +       raw_inode->i_disk_version = cpu_to_le32(ei->i_fs_version);
58         if (ei->i_extra_isize) {
59                 if (EXT4_FITS_IN_INODE(raw_inode, ei, i_version_hi))
60                         raw_inode->i_version_hi =
61 -                       cpu_to_le32(inode->i_version >> 32);
62 +                       cpu_to_le32(ei->i_fs_version >> 32);
63                 raw_inode->i_extra_isize = cpu_to_le16(ei->i_extra_isize);
64         }
65  
66