diff -rup -X dontdiff linux/fs/reiserfs/procfs.c linux.patched/fs/reiserfs/procfs.c
--- linux/fs/reiserfs/procfs.c  Wed Nov 21 12:02:22 2001
+++ linux.patched/fs/reiserfs/procfs.c  Wed Nov 21 21:47:02 2001
@@ -163,6 +163,12 @@ int reiserfs_super_in_proc( char *buffer
                       "search_by_key_fs_changed: \t%lu\n"
                       "search_by_key_restarted: \t%lu\n"

+                       "insert_item_restarted: \t%lu\n"
+                       "paste_into_item_restarted: \t%lu\n"
+                       "cut_from_item_restarted: \t%lu\n"
+                       "delete_solid_item_restarted: \t%lu\n"
+                       "delete_item_restarted: \t%lu\n"
+
                       "leaked_oid: \t%lu\n"
                       "leaves_removable: \t%lu\n",

@@ -199,6 +205,13 @@ int reiserfs_super_in_proc( char *buffer
                       SFP( search_by_key ),
                       SFP( search_by_key_fs_changed ),
                       SFP( search_by_key_restarted ),
+
+                       SFP( insert_item_restarted ),
+                       SFP( paste_into_item_restarted ),
+                       SFP( cut_from_item_restarted ),
+                       SFP( delete_solid_item_restarted ),
+                       SFP( delete_item_restarted ),
+
                       SFP( leaked_oid ),
                       SFP( leaves_removable ) );

diff -rup -X dontdiff linux/fs/reiserfs/stree.c linux.patched/fs/reiserfs/stree.c
--- linux/fs/reiserfs/stree.c   Wed Nov 21 15:40:27 2001
+++ linux.patched/fs/reiserfs/stree.c   Wed Nov 21 22:00:53 2001
@@ -1242,6 +1242,8 @@ int reiserfs_delete_item (struct reiserf
       if ( n_ret_value != REPEAT_SEARCH )
           break;

+       PROC_INFO_INC( p_s_sb, delete_item_restarted );
+
       // file system changed, repeat search
       n_ret_value = search_for_position_by_key(p_s_sb, p_s_item_key, p_s_path);
       if (n_ret_value == IO_ERROR)
@@ -1350,8 +1352,10 @@ void reiserfs_delete_solid_item (struct
       }

       retval = fix_nodes (M_DELETE, &tb, NULL, 0);
-       if (retval == REPEAT_SEARCH)
+       if (retval == REPEAT_SEARCH) {
+           PROC_INFO_INC( th -> t_super, delete_solid_item_restarted );
           continue;
+       }

       if (retval == CARRY_ON) {
           do_balance (&tb, 0, 0, M_DELETE);
@@ -1538,6 +1542,8 @@ int reiserfs_cut_from_item (struct reise
       if ( n_ret_value != REPEAT_SEARCH )
           break;

+       PROC_INFO_INC( p_s_sb, cut_from_item_restarted );
+
       n_ret_value = search_for_position_by_key(p_s_sb, p_s_item_key, p_s_path);
       if (n_ret_value == POSITION_FOUND)
           continue;
@@ -1805,6 +1811,7 @@ int reiserfs_paste_into_item (struct rei

    while ( (retval = fix_nodes(M_PASTE, &s_paste_balance, NULL, p_c_body)) == REPEAT_SEARCH ) {
       /* file system changed while we were in the fix_nodes */
+       PROC_INFO_INC( th -> t_super, paste_into_item_restarted );
       retval = search_for_position_by_key (th->t_super, p_s_key, p_s_search_path);
       if (retval == IO_ERROR) {
           retval = -EIO ;
@@ -1855,6 +1862,7 @@ int reiserfs_insert_item(struct reiserfs

    while ( (retval = fix_nodes(M_INSERT, &s_ins_balance, p_s_ih, p_c_body)) == REPEAT_SEARCH) {
       /* file system changed while we were in the fix_nodes */
+       PROC_INFO_INC( th -> t_super, insert_item_restarted );
       retval = search_item (th->t_super, key, p_s_path);
       if (retval == IO_ERROR) {
           retval = -EIO;
diff -rup -X dontdiff linux/include/linux/reiserfs_fs_sb.h linux.patched/include/linux/reiserfs_fs_sb.h
--- linux/include/linux/reiserfs_fs_sb.h        Wed Nov 21 15:40:27 2001
+++ linux.patched/include/linux/reiserfs_fs_sb.h        Wed Nov 21 21:41:29 2001
@@ -330,6 +330,12 @@ typedef struct reiserfs_proc_info_data
  stat_cnt_t search_by_key_fs_changed;
  stat_cnt_t search_by_key_restarted;

+  stat_cnt_t insert_item_restarted;
+  stat_cnt_t paste_into_item_restarted;
+  stat_cnt_t cut_from_item_restarted;
+  stat_cnt_t delete_solid_item_restarted;
+  stat_cnt_t delete_item_restarted;
+
  stat_cnt_t leaked_oid;
  stat_cnt_t leaves_removable;