Manfred Spraul wrote:
> 
> 'event' is a global variable that shouldn't be used for building
> i_generation.
> reiserfs uses it in #ifdef-out code.
> 
> Could you replace that with a reiserfs-specific counter? 'event' will
> hopefully die during 2.5 - actually as soon as possible.
> 
> Patch attached, but untested.
> 
> --
>         Manfred
> 
>   --------------------------------------------------------------------------------
> diff -u 2.4/fs/reiserfs/inode.c build-2.4/fs/reiserfs/inode.c
> --- 2.4/fs/reiserfs/inode.c     Tue Oct 16 21:28:41 2001
> +++ build-2.4/fs/reiserfs/inode.c       Wed Oct 17 23:49:07 2001
> @@ -1465,7 +1465,7 @@
>        inode->i_generation =
>         le32_to_cpu( sb -> u.reiserfs_sb.s_rs -> s_inode_generation );
>  #else
> -      inode->i_generation = ++event;
> +      inode->i_generation = reiserfs_generation++;
>  #endif
>      if (old_format_only (sb))
>         make_le_item_head (&ih, 0, ITEM_VERSION_1, SD_OFFSET, TYPE_STAT_DATA, 
>SD_V1_SIZE, MAX_US_INT);
> diff -u 2.4/fs/reiserfs/super.c build-2.4/fs/reiserfs/super.c
> --- 2.4/fs/reiserfs/super.c     Tue Oct 16 21:28:41 2001
> +++ build-2.4/fs/reiserfs/super.c       Wed Oct 17 23:52:50 2001
> @@ -23,6 +23,9 @@
>  #define REISERFS_OLD_BLOCKSIZE 4096
>  #define REISERFS_SUPER_MAGIC_STRING_OFFSET_NJ 20
> 
> +#if !defined( USE_INODE_GENERATION_COUNTER )
> +u32 reiserfs_generation;
> +#endif
> 
> 
>  //
> @@ -799,6 +802,9 @@
>  //
>  static int __init init_reiserfs_fs (void)
>  {
> +#if !defined( USE_INODE_GENERATION_COUNTER )
> +       get_random_bytes(&reiserfs_generation, sizeof(reiserfs_generation));
> +#endif
>          return register_filesystem(&reiserfs_fs_type);
>  }
> 


Nikita will answer this when he gets back from Italy in a week or so.

Hans

Reply via email to