diff -rup v2.4.untoched/linux/fs/reiserfs/inode.c linux/fs/reiserfs/inode.c
--- v2.4.untoched/linux/fs/reiserfs/inode.c     Sat Jul 21 21:05:18 2001
+++ linux/fs/reiserfs/inode.c   Thu Aug  2 20:46:50 2001
@@ -562,10 +562,9 @@ int reiserfs_get_block (struct inode * i
    windex = push_journal_writer("reiserfs_get_block") ;

    /* set the key of the first byte in the 'block'-th block of file */
-    make_cpu_key (&key, inode,
-                 (loff_t)block * inode->i_sb->s_blocksize + 1, // k_offset
+    make_cpu_key (&key, inode, new_offset,
                 TYPE_ANY, 3/*key length*/);
-    if ((new_offset + inode->i_sb->s_blocksize) >= inode->i_size) {
+    if ((new_offset + inode->i_sb->s_blocksize - 1) > inode->i_size) {
       journal_begin(&th, inode->i_sb, jbegin_count) ;
       transaction_started = 1 ;
    }
@@ -618,9 +617,12 @@ int reiserfs_get_block (struct inode * i
    }

    if (indirect_item_found (retval, ih)) {
+       unsigned long unfm_ptr;
+
       /* 'block'-th block is in the file already (there is
          corresponding cell in some indirect item). But it may be
          zero unformatted node pointer (hole) */
+       unfm_ptr = le32_to_cpu (item[pos_in_item]);
       if (!item[pos_in_item]) {
           /* use allocated block to plug the hole */
           reiserfs_prepare_for_journal(inode->i_sb, bh, 1) ;
@@ -630,11 +632,12 @@ int reiserfs_get_block (struct inode * i
           }
           bh_result->b_state |= (1UL << BH_New);
           item[pos_in_item] = cpu_to_le32 (allocated_block_nr);
+           unfm_ptr = allocated_block_nr;
           journal_mark_dirty (&th, inode->i_sb, bh);
           inode->i_blocks += (inode->i_sb->s_blocksize / 512) ;
           reiserfs_update_sd(&th, inode) ;
       }
-       set_block_dev_mapped(bh_result, le32_to_cpu (item[pos_in_item]), inode);
+       set_block_dev_mapped(bh_result, unfm_ptr, inode);
       pathrelse (&path);
#ifdef REISERFS_CHECK
       pop_journal_writer(windex) ;
diff -rup v2.4.untoched/linux/fs/reiserfs/stree.c linux/fs/reiserfs/stree.c
--- v2.4.untoched/linux/fs/reiserfs/stree.c     Sat Jul 21 21:05:18 2001
+++ linux/fs/reiserfs/stree.c   Tue Aug  7 19:52:32 2001
@@ -1857,6 +1857,7 @@ void reiserfs_do_truncate (struct reiser
       return;
    }
    if (retval == POSITION_FOUND || retval == FILE_NOT_FOUND) {
+       pathrelse (&s_search_path);
       reiserfs_warning ("PAP-5660: reiserfs_do_truncate: "
                         "wrong result %d of search for %K\n", retval, &s_item_key);
       return;