[PATCH] reiserfs fix for inodes with wrong item versions (2.5)

From: Oleg Drokin on behalf of Hans Reiser (reiser@namesys.com)
Date: Wed Feb 06 2002 - 10:51:41 EST


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
   
--- linux-2.5.4-pre1/fs/reiserfs/inode.c.orig Wed Feb 6 11:18:35 2002
+++ linux-2.5.4-pre1/fs/reiserfs/inode.c Wed Feb 6 11:12:08 2002
@@ -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)) {
-
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@vger.kernel.org
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/



This archive was generated by hypermail 2b29 : Thu Feb 07 2002 - 21:00:50 EST