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; .