--- linux-2.2.16-3.ext3/fs/ext3/namei.c.~1~     Thu Jul  6 12:55:50 2000
+++ linux-2.2.16-3.ext3/fs/ext3/namei.c Thu Jul  6 15:13:25 2000
@@ -255,6 +255,7 @@
                               de->inode = 0;
                               de->rec_len = le16_to_cpu(sb->s_blocksize);
                               dir->i_size = offset + sb->s_blocksize;
+                               dir->u.ext3_i.i_disksize = dir->i_size;
                               dir->u.ext3_i.i_flags &= ~EXT3_BTREE_FL;
                               ext3_mark_inode_dirty(handle, dir);
                               /* Just keep the buffer reserved for now. */
@@ -405,7 +406,7 @@
       d_instantiate(dentry, inode);

out:
-       ext3_journal_stop(handle, inode);
+       ext3_journal_stop(handle, dir);
       return err;
}

@@ -465,7 +466,7 @@
       d_instantiate(dentry, inode);
       brelse(bh);
out_stop:
-       ext3_journal_stop(handle, inode);
+       ext3_journal_stop(handle, dir);
       return err;

out_no_entry:
@@ -494,7 +495,7 @@
               goto out_stop;

       inode->i_op = &ext3_dir_inode_operations;
-       inode->i_size = inode->i_sb->s_blocksize;
+       inode->i_size = inode->u.ext3_i.i_disksize = inode->i_sb->s_blocksize;
       inode->i_blocks = 0;
       dir_block = ext3_bread (handle, inode, 0, 1, &err);
       if (!dir_block) {
@@ -546,7 +547,7 @@
       err = 0;

out_stop:
-       ext3_journal_stop(handle, inode);
+       ext3_journal_stop(handle, dir);
out:
       return err;

@@ -659,6 +660,7 @@
       inode->i_version = ++global_event;
       inode->i_nlink = 0;
       inode->i_size = 0;
+       ext3_orphan_add(handle, inode);
       ext3_mark_inode_dirty(handle, inode);
       dir->i_nlink--;
       inode->i_ctime = dir->i_ctime = dir->i_mtime = CURRENT_TIME;
@@ -801,7 +803,7 @@
               journal_dirty_metadata(handle, name_block);
               brelse (name_block);
       }
-       inode->i_size = i;
+       inode->i_size = inode->u.ext3_i.i_disksize = i;
       ext3_mark_inode_dirty(handle, inode);

       bh = ext3_add_entry (handle, dir, dentry->d_name.name, dentry->d_name.len, &de, &err);