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>

Index: linux-4.18.0-32.el8.x86_64/fs/ext4/ialloc.c
===================================================================
--- linux-4.18.0-32.el8.x86_64.orig/fs/ext4/ialloc.c
+++ linux-4.18.0-32.el8.x86_64/fs/ext4/ialloc.c
@@ -1100,6 +1100,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);
 	if (IS_DIRSYNC(inode))
Index: linux-4.18.0-32.el8.x86_64/fs/ext4/ext4.h
===================================================================
--- linux-4.18.0-32.el8.x86_64.orig/fs/ext4/ext4.h
+++ linux-4.18.0-32.el8.x86_64/fs/ext4/ext4.h
@@ -1058,6 +1058,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;
 
Index: linux-4.18.0-32.el8.x86_64/fs/ext4/inode.c
===================================================================
--- linux-4.18.0-32.el8.x86_64.orig/fs/ext4/inode.c
+++ linux-4.18.0-32.el8.x86_64/fs/ext4/inode.c
@@ -4775,14 +4775,14 @@ static inline void ext4_inode_set_iversi
 	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;
 }
 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;
 }
 
 struct inode *ext4_iget(struct super_block *sb, unsigned long ino)