Viewing: ext4-inode-version.patch

commit 3675818845f2a4713348c363eb78f696753ad24e
Author:     Girish Shilamkar <girish@clusterfs.com>
AuthorDate: Thu May 22 17:01:56 2008 +0000

Fix ext3 inode version field being filled with 0x5a5a5a5a on disk.
Declare our own in-core i_fs_version to hold the Lustre transno.

Bugzilla-ID: b=15604
Signed-off-by: Girish Shilamkar <girish@clusterfs.com>
Reviewed-by: Andreas Dilger <adilger@clusterfs.com>

diff --git a/fs/ext4/ext4.h b/fs/ext4/ext4.h
index d248a01..a154919 100644
--- a/fs/ext4/ext4.h
+++ b/fs/ext4/ext4.h
@@ -1165,6 +1165,8 @@ struct ext4_inode_info {
 	struct dquot *i_dquot[MAXQUOTAS];
 #endif
 
+	__u64 i_fs_version;
+
 	/* Precomputed uuid+inum+igen checksum for seeding inode checksums */
 	__u32 i_csum_seed;
 
diff --git a/fs/ext4/ialloc.c b/fs/ext4/ialloc.c
index f73e5eb..5d0a11d 100644
--- a/fs/ext4/ialloc.c
+++ b/fs/ext4/ialloc.c
@@ -1264,6 +1264,7 @@ got:
 	ei->i_dtime = 0;
 	ei->i_block_group = group;
 	ei->i_last_alloc_group = ~0;
+	ei->i_fs_version = 0;
 
 	ext4_set_inode_flags(inode, true);
 	if (IS_DIRSYNC(inode))
diff --git a/fs/ext4/inode.c b/fs/ext4/inode.c
index 3bdfe01..b22628a 100644
--- a/fs/ext4/inode.c
+++ b/fs/ext4/inode.c
@@ -4220,7 +4220,7 @@ static inline u64 ext4_inode_peek_iversion(const struct inode *inode)
 	if (unlikely(EXT4_I(inode)->i_flags & EXT4_EA_INODE_FL))
 		return inode_peek_iversion_raw(inode);
 	else
-		return inode_peek_iversion(inode);
+		return EXT4_I(inode)->i_fs_version;
 }
 
 static int ext4_inode_blocks_set(struct ext4_inode *raw_inode,
@@ -4658,7 +4658,7 @@ static inline void ext4_inode_set_iversion_queried(struct inode *inode, u64 val)
 	if (unlikely(EXT4_I(inode)->i_flags & EXT4_EA_INODE_FL))
 		inode_set_iversion_raw(inode, val);
 	else
-		inode_set_iversion_queried(inode, val);
+		EXT4_I(inode)->i_fs_version = val;
 }
 
 struct inode *__ext4_iget(struct super_block *sb, unsigned long ino,
-- 
2.27.0