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