--- x/fs/reiserfs/inode.c +++ y/fs/reiserfs/inode.c @@ -2263,8 +2263,6 @@ int reiserfs_truncate_file(struct inode struct buffer_head *bh = NULL; int err2; - reiserfs_write_lock(inode->i_sb); - if (inode->i_size > 0) { error = grab_tail_page(inode, &page, &bh); if (error) { @@ -2282,6 +2280,8 @@ int reiserfs_truncate_file(struct inode } } + reiserfs_write_lock(inode->i_sb); + /* * so, if page != NULL, we have a buffer head for the offset at * the end of the file. if the bh is mapped, and bh->b_blocknr != 0,