--- linux/include/linux/reiserfs_fs_sb.h.orig	Fri Dec 14 12:52:46 2001
+++ linux/include/linux/reiserfs_fs_sb.h	Fri Dec 14 18:31:59 2001
@@ -407,6 +407,8 @@
 				/* To be obsoleted soon by per buffer seals.. -Hans */
     atomic_t s_generation_counter; // increased by one every time the
     // tree gets re-balanced
+    unsigned int s_properties;	   /* File system properties. Currently holds
+				      on-disk FS format */
     
     /* session statistics */
     int s_kmallocs;
@@ -424,7 +426,11 @@
     struct proc_dir_entry *procdir;
 };
 
+/* Definitions of reiserfs on-disk properties: */
+#define REISERFS_3_5 0
+#define REISERFS_3_6 1
 
+/* Mount options */
 #define NOTAIL 0  /* -o notail: no tails will be created in a session */
 #define REPLAYONLY 3 /* replay journal and return 0. Use by fsck */
 #define REISERFS_NOLOG 4      /* -o nolog: turn journalling off */
@@ -474,7 +480,8 @@
 #define dont_have_tails(s) ((s)->u.reiserfs_sb.s_mount_opt & (1 << NOTAIL))
 #define replay_only(s) ((s)->u.reiserfs_sb.s_mount_opt & (1 << REPLAYONLY))
 #define reiserfs_dont_log(s) ((s)->u.reiserfs_sb.s_mount_opt & (1 << REISERFS_NOLOG))
-#define old_format_only(s) ((SB_VERSION(s) != REISERFS_VERSION_2) && !((s)->u.reiserfs_sb.s_mount_opt & (1 << REISERFS_CONVERT)))
+#define old_format_only(s) ((s)->u.reiserfs_sb.s_properties & (1 << REISERFS_3_5))
+#define convert_reiserfs(s) ((s)->u.reiserfs_sb.s_mount_opt & (1 << REISERFS_CONVERT))
 
 
 void reiserfs_file_buffer (struct buffer_head * bh, int list);
--- linux/fs/reiserfs/super.c.orig	Fri Dec 14 12:53:16 2001
+++ linux/fs/reiserfs/super.c	Fri Dec 14 18:34:11 2001
@@ -724,19 +724,21 @@
 
         if ( old_magic ) {
 	    // filesystem created under 3.5.x found
-	    if (!old_format_only (s)) {
+	    if (convert_reiserfs(s)) {
 		reiserfs_warning("reiserfs: converting 3.5.x filesystem to the new format\n") ;
 		// after this 3.5.x will not be able to mount this partition
 		memcpy (rs->s_magic, REISER2FS_SUPER_MAGIC_STRING, 
 			sizeof (REISER2FS_SUPER_MAGIC_STRING));
 
 		reiserfs_convert_objectid_map_v1(s) ;
+		set_bit(REISERFS_3_6, &(s->u.reiserfs_sb.s_properties));
 	    } else {
 		reiserfs_warning("reiserfs: using 3.5.x disk format\n") ;
+		set_bit(REISERFS_3_5, &(s->u.reiserfs_sb.s_properties));
 	    }
 	} else {
 	    // new format found
-	    set_bit (REISERFS_CONVERT, &(s->u.reiserfs_sb.s_mount_opt));
+	    set_bit(REISERFS_3_6, &(s->u.reiserfs_sb.s_properties));
 	}
 
 	// mark hash in super block: it could be unset. overwrite should be ok
@@ -750,7 +752,9 @@
 	if (strncmp (rs->s_magic,  REISER2FS_SUPER_MAGIC_STRING, 
 		     strlen ( REISER2FS_SUPER_MAGIC_STRING))) {
 	    reiserfs_warning("reiserfs: using 3.5.x disk format\n") ;
-	}
+		set_bit(REISERFS_3_5, &(s->u.reiserfs_sb.s_properties));
+	} else
+		set_bit(REISERFS_3_6, &(s->u.reiserfs_sb.s_properties));
     }
 
     reiserfs_proc_info_init( s );
--- linux/fs/reiserfs/procfs.c.orig	Fri Dec 14 12:53:16 2001
+++ linux/fs/reiserfs/procfs.c	Fri Dec 14 18:31:59 2001
@@ -15,6 +15,7 @@
 #include <linux/sched.h>
 #include <asm/uaccess.h>
 #include <linux/reiserfs_fs.h>
+#include <linux/reiserfs_fs_sb.h>
 #include <linux/smp_lock.h>
 #include <linux/locks.h>
 #include <linux/init.h>
@@ -76,12 +77,20 @@
 {
 	int len = 0;
 	struct super_block *sb;
+	char *format;
     
 	sb = procinfo_prologue( ( kdev_t ) ( int ) data );
 	if( sb == NULL )
 		return -ENOENT;
+	if ( sb->u.reiserfs_sb.s_properties & (1 << REISERFS_3_6) ) {
+		format = "3.6";
+	} else if ( sb->u.reiserfs_sb.s_properties & (1 << REISERFS_3_5) ) {
+		format = "3.5";
+	} else {
+		format = "unknown";
+	}
 	len += sprintf( &buffer[ len ], "%s format\twith checks %s\n",
-			old_format_only( sb ) ? "old" : "new",
+			format,
 #if defined( CONFIG_REISERFS_CHECK )
 			"on"
 #else
@@ -179,7 +188,7 @@
 			dont_have_tails( sb ) ? "NO_TAILS " : "TAILS ",
 			replay_only( sb ) ? "REPLAY_ONLY " : "",
 			reiserfs_dont_log( sb ) ? "DONT_LOG " : "LOG ",
-			old_format_only( sb ) ? "CONV " : "",
+			convert_reiserfs( sb ) ? "CONV " : "",
 
 			atomic_read( &r -> s_generation_counter ),
 			SF( s_kmallocs ),
