Skip to contentSkip to conversation

reiserfs fix for inodes with wrong item versions (2.5)

PATCH New Oleg Drokin on behalf of Hans Reiser 1 participant 1 message Feb 6, 2002

lore
Share & tools
lore
#0 lore raw

PATCH 1/1 reiserfs fix for inodes with wrong item versions (2.5)

Hello!

This is hopefully last bugfix for a bug introduced by struct inode splitting. Because of setting i_flags to some value and then cleaning the i_flags contents later, on-disk items received wrong item version ob v3.6 filesystems

Please apply.

Bye,
Oleg

fs/reiserfs/inode.c renamed from fs/reiserfs/inode.c.orig +7 -7
@@ -890,6 +890,13 @@
     inode->i_blksize = PAGE_SIZE;
 
     INIT_LIST_HEAD(&(REISERFS_I(inode)->i_prealloc_list ));
+    REISERFS_I(inode)->i_flags = 0;
+    REISERFS_I(inode)->i_prealloc_block = 0;
+    REISERFS_I(inode)->i_prealloc_count = 0;
+    REISERFS_I(inode)->i_trans_id = 0;
+    REISERFS_I(inode)->i_trans_index = 0;
+    /* nopack = 0, by default */
+    REISERFS_I(inode)->i_flags &= ~i_nopack_mask;
 
     if (stat_data_v1 (ih)) {
 	struct stat_data_v1 * sd = (struct stat_data_v1 *)B_I_PITEM (bh, ih);
@@ -950,13 +957,6 @@
 	    set_inode_item_key_version (inode, KEY_FORMAT_3_6);
 	REISERFS_I(inode)->i_first_direct_byte = 0;
     }
-    REISERFS_I(inode)->i_flags = 0;
-    REISERFS_I(inode)->i_prealloc_block = 0;
-    REISERFS_I(inode)->i_prealloc_count = 0;
-    REISERFS_I(inode)->i_trans_id = 0;
-    REISERFS_I(inode)->i_trans_index = 0;
-    /* nopack = 0, by default */
-    REISERFS_I(inode)->i_flags &= ~i_nopack_mask;
 
     pathrelse (path);
     if (S_ISREG (inode->i_mode)) {