inode->i_op = &ext3_file_inode_operations;
inode->i_fop = &ext3_file_operations;
inode->i_mapping->a_ops = &ext3_aops;
-@@ -2131,13 +2138,15 @@
+@@ -2131,7 +2138,7 @@
inode->i_op = &ext3_dir_inode_operations;
inode->i_fop = &ext3_dir_operations;
} else if (S_ISLNK(inode->i_mode)) {
+ if (ext3_inode_is_fast_symlink(inode))
inode->i_op = &ext3_fast_symlink_inode_operations;
else {
-- inode->i_op = &page_symlink_inode_operations;
-+ inode->i_op = &ext3_symlink_inode_operations;
- inode->i_mapping->a_ops = &ext3_aops;
- }
-- } else
-+ } else {
-+ inode->i_op = &ext3_special_inode_operations;
- init_special_inode(inode, inode->i_mode,
- le32_to_cpu(iloc.raw_inode->i_block[0]));
-+ }
- /* inode->i_attr_flags = 0; unused */
+ inode->i_op = &page_symlink_inode_operations;
diff -Nur linux-2.4.18/fs/ext3/namei.c linux-2.4.18ea/fs/ext3/namei.c
--- linux-2.4.18/fs/ext3/namei.c Fri Nov 9 23:25:04 2001
+++ linux-2.4.18ea/fs/ext3/namei.c Mon Mar 11 03:27:00 2002
inode->i_nlink = 0;
ext3_mark_inode_dirty(handle, inode);
iput (inode);
-@@ -917,7 +919,7 @@
+@@ -917,5 +919,5 @@
goto out_stop;
- if (l > sizeof (inode->u.ext3_i.i_data)) {
-- inode->i_op = &page_symlink_inode_operations;
+ if (l > sizeof(EXT3_I(inode)->i_data)) {
-+ inode->i_op = &ext3_symlink_inode_operations;
+ inode->i_op = &page_symlink_inode_operations;
inode->i_mapping->a_ops = &ext3_aops;
- /*
- * block_symlink() calls back into ext3_prepare/commit_write.
diff -Nur linux-2.4.18/fs/ext3/super.c linux-2.4.18ea/fs/ext3/super.c
--- linux-2.4.18/fs/ext3/super.c Sun Feb 24 04:42:59 2002
+++ linux-2.4.18ea/fs/ext3/super.c Thu Apr 4 21:41:05 2002
extern struct buffer_head * ext3_getblk (handle_t *, struct inode *, long, int, int *);
extern struct buffer_head * ext3_bread (handle_t *, struct inode *, int, int, int *);
-@@ -694,8 +670,10 @@
-
- /* namei.c */
- extern struct inode_operations ext3_dir_inode_operations;
-+extern struct inode_operations ext3_special_inode_operations;
-
- /* symlink.c */
-+extern struct inode_operations ext3_symlink_inode_operations;
- extern struct inode_operations ext3_fast_symlink_inode_operations;
-
-
diff -Nur linux-2.4.18/include/linux/ext3_jbd.h linux-2.4.18ea/include/linux/ext3_jbd.h
--- linux-2.4.18/include/linux/ext3_jbd.h Fri Dec 21 18:42:03 2001
+++ linux-2.4.18ea/include/linux/ext3_jbd.h Mon Mar 25 00:11:36 2002