Fix ext3-4-migrate.patch and mballoc-core.patches
[ext4-patch-queue.git] / ext4-rename-i_dir_acl-to-i_size_high.patch
blob016e17a3c4c944dcdd201692d950b0159b256742
1 ext4: Rename i_dir_acl to i_size_high
3 From: Aneesh Kumar K.V <aneesh.kumar@linux.vnet.ibm.com>
5 Rename ext4_inode.i_dir_acl to i_size_high
6 drop ext4_inode_info.i_dir_acl as it is not used
7 Rename ext4_inode.i_size to ext4_inode.i_size_lo
8 Add helper function for accessing the ext4_inode combined i_size.
10 Signed-off-by: Aneesh Kumar K.V <aneesh.kumar@linux.vnet.ibm.com>
11 ---
13 fs/ext4/ialloc.c | 1 -
14 fs/ext4/inode.c | 55 ++++++++++++++++++---------------------------
15 include/linux/ext4_fs.h | 15 ++++++++++--
16 include/linux/ext4_fs_i.h | 1 -
17 4 files changed, 34 insertions(+), 38 deletions(-)
20 diff --git a/fs/ext4/ialloc.c b/fs/ext4/ialloc.c
21 index 00b152b..17b5df1 100644
22 --- a/fs/ext4/ialloc.c
23 +++ b/fs/ext4/ialloc.c
24 @@ -709,7 +709,6 @@ got:
25 if (!S_ISDIR(mode))
26 ei->i_flags &= ~EXT4_DIRSYNC_FL;
27 ei->i_file_acl = 0;
28 - ei->i_dir_acl = 0;
29 ei->i_dtime = 0;
30 ei->i_block_alloc_info = NULL;
31 ei->i_block_group = group;
32 diff --git a/fs/ext4/inode.c b/fs/ext4/inode.c
33 index 7bcec18..e663455 100644
34 --- a/fs/ext4/inode.c
35 +++ b/fs/ext4/inode.c
36 @@ -2694,7 +2694,6 @@ void ext4_read_inode(struct inode * inode)
37 inode->i_gid |= le16_to_cpu(raw_inode->i_gid_high) << 16;
39 inode->i_nlink = le16_to_cpu(raw_inode->i_links_count);
40 - inode->i_size = le32_to_cpu(raw_inode->i_size);
42 ei->i_state = 0;
43 ei->i_dir_start_lookup = 0;
44 @@ -2720,15 +2719,11 @@ void ext4_read_inode(struct inode * inode)
45 ei->i_flags = le32_to_cpu(raw_inode->i_flags);
46 ei->i_file_acl = le32_to_cpu(raw_inode->i_file_acl_lo);
47 if (EXT4_SB(inode->i_sb)->s_es->s_creator_os !=
48 - cpu_to_le32(EXT4_OS_HURD))
49 + cpu_to_le32(EXT4_OS_HURD)) {
50 ei->i_file_acl |=
51 ((__u64)le16_to_cpu(raw_inode->i_file_acl_high)) << 32;
52 - if (!S_ISREG(inode->i_mode)) {
53 - ei->i_dir_acl = le32_to_cpu(raw_inode->i_dir_acl);
54 - } else {
55 - inode->i_size |=
56 - ((__u64)le32_to_cpu(raw_inode->i_size_high)) << 32;
58 + inode->i_size = ext4_isize(raw_inode);
59 ei->i_disksize = inode->i_size;
60 inode->i_generation = le32_to_cpu(raw_inode->i_generation);
61 ei->i_block_group = iloc.block_group;
62 @@ -2852,7 +2847,6 @@ static int ext4_do_update_inode(handle_t *handle,
63 raw_inode->i_gid_high = 0;
65 raw_inode->i_links_count = cpu_to_le16(inode->i_nlink);
66 - raw_inode->i_size = cpu_to_le32(ei->i_disksize);
68 EXT4_INODE_SET_XTIME(i_ctime, inode, raw_inode);
69 EXT4_INODE_SET_XTIME(i_mtime, inode, raw_inode);
70 @@ -2867,32 +2861,27 @@ static int ext4_do_update_inode(handle_t *handle,
71 raw_inode->i_file_acl_high =
72 cpu_to_le16(ei->i_file_acl >> 32);
73 raw_inode->i_file_acl_lo = cpu_to_le32(ei->i_file_acl);
74 - if (!S_ISREG(inode->i_mode)) {
75 - raw_inode->i_dir_acl = cpu_to_le32(ei->i_dir_acl);
76 - } else {
77 - raw_inode->i_size_high =
78 - cpu_to_le32(ei->i_disksize >> 32);
79 - if (ei->i_disksize > 0x7fffffffULL) {
80 - struct super_block *sb = inode->i_sb;
81 - if (!EXT4_HAS_RO_COMPAT_FEATURE(sb,
82 - EXT4_FEATURE_RO_COMPAT_LARGE_FILE) ||
83 - EXT4_SB(sb)->s_es->s_rev_level ==
84 - cpu_to_le32(EXT4_GOOD_OLD_REV)) {
85 - /* If this is the first large file
86 - * created, add a flag to the superblock.
87 - */
88 - err = ext4_journal_get_write_access(handle,
89 - EXT4_SB(sb)->s_sbh);
90 - if (err)
91 - goto out_brelse;
92 - ext4_update_dynamic_rev(sb);
93 - EXT4_SET_RO_COMPAT_FEATURE(sb,
94 + ext4_isize_set(raw_inode, ei->i_disksize);
95 + if (ei->i_disksize > 0x7fffffffULL) {
96 + struct super_block *sb = inode->i_sb;
97 + if (!EXT4_HAS_RO_COMPAT_FEATURE(sb,
98 + EXT4_FEATURE_RO_COMPAT_LARGE_FILE) ||
99 + EXT4_SB(sb)->s_es->s_rev_level ==
100 + cpu_to_le32(EXT4_GOOD_OLD_REV)) {
101 + /* If this is the first large file
102 + * created, add a flag to the superblock.
103 + */
104 + err = ext4_journal_get_write_access(handle,
105 + EXT4_SB(sb)->s_sbh);
106 + if (err)
107 + goto out_brelse;
108 + ext4_update_dynamic_rev(sb);
109 + EXT4_SET_RO_COMPAT_FEATURE(sb,
110 EXT4_FEATURE_RO_COMPAT_LARGE_FILE);
111 - sb->s_dirt = 1;
112 - handle->h_sync = 1;
113 - err = ext4_journal_dirty_metadata(handle,
114 - EXT4_SB(sb)->s_sbh);
116 + sb->s_dirt = 1;
117 + handle->h_sync = 1;
118 + err = ext4_journal_dirty_metadata(handle,
119 + EXT4_SB(sb)->s_sbh);
122 raw_inode->i_generation = cpu_to_le32(inode->i_generation);
123 diff --git a/include/linux/ext4_fs.h b/include/linux/ext4_fs.h
124 index 6894f36..a8f3fae 100644
125 --- a/include/linux/ext4_fs.h
126 +++ b/include/linux/ext4_fs.h
127 @@ -275,7 +275,7 @@ struct ext4_mount_options {
128 struct ext4_inode {
129 __le16 i_mode; /* File mode */
130 __le16 i_uid; /* Low 16 bits of Owner Uid */
131 - __le32 i_size; /* Size in bytes */
132 + __le32 i_size_lo; /* Size in bytes */
133 __le32 i_atime; /* Access time */
134 __le32 i_ctime; /* Inode Change time */
135 __le32 i_mtime; /* Modification time */
136 @@ -298,7 +298,7 @@ struct ext4_inode {
137 __le32 i_block[EXT4_N_BLOCKS];/* Pointers to blocks */
138 __le32 i_generation; /* File version (for NFS) */
139 __le32 i_file_acl_lo; /* File ACL */
140 - __le32 i_dir_acl; /* Directory ACL */
141 + __le32 i_size_high;
142 __le32 i_obso_faddr; /* Obsoleted fragment address */
143 union {
144 struct {
145 @@ -330,7 +330,6 @@ struct ext4_inode {
146 __le32 i_crtime_extra; /* extra FileCreationtime (nsec << 2 | epoch) */
149 -#define i_size_high i_dir_acl
151 #define EXT4_EPOCH_BITS 2
152 #define EXT4_EPOCH_MASK ((1 << EXT4_EPOCH_BITS) - 1)
153 @@ -1049,7 +1048,17 @@ static inline void ext4_r_blocks_count_set(struct ext4_super_block *es,
154 es->s_r_blocks_count_hi = cpu_to_le32(blk >> 32);
157 +static inline loff_t ext4_isize(struct ext4_inode *raw_inode)
159 + return ((loff_t)le32_to_cpu(raw_inode->i_size_high) << 32) |
160 + le32_to_cpu(raw_inode->i_size_lo);
163 +static inline void ext4_isize_set(struct ext4_inode *raw_inode, loff_t i_size)
165 + raw_inode->i_size_lo = cpu_to_le32(i_size);
166 + raw_inode->i_size_high = cpu_to_le32(i_size >> 32);
169 #define ext4_std_error(sb, errno) \
170 do { \
171 diff --git a/include/linux/ext4_fs_i.h b/include/linux/ext4_fs_i.h
172 index 2b4e370..f1cd493 100644
173 --- a/include/linux/ext4_fs_i.h
174 +++ b/include/linux/ext4_fs_i.h
175 @@ -85,7 +85,6 @@ struct ext4_inode_info {
176 __le32 i_data[15]; /* unconverted */
177 __u32 i_flags;
178 ext4_fsblk_t i_file_acl;
179 - __u32 i_dir_acl;
180 __u32 i_dtime;