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;