On Mar 24, 2008 17:07 +0530, Aneesh Kumar K.V wrote: > @@ -204,6 +204,14 @@ void ext4_delete_inode (struct inode * inode) > if (inode->i_blocks) > ext4_truncate(inode); > + > + /* > + * In case of link clear the extent flag. Fast symlinks are not > + * stored in extent format we use i_blocks count to determine > + * whether it is fast link or not. > + */ > + if (S_ISLNK(inode->i_mode)) > + EXT4_I(inode)->i_flags &= ~EXT4_EXTENTS_FL; This is a big hack I think. It shouldn't matter to e2fsck whether a deleted long symlink is in extent format or not, and clearing the flag like this would make it harder to undelete this symlink if needed. This should be fixed in e2fsck and not the kernel. Also, it is (IMHO) a hack that we use the i_blocks count to determine if a symlink is fast or slow. That is what caused the breakage when EAs on symlinks were added, and if we add extra blocks to symlinks for some other reason (e.g. more than a single EA block, or other) it will break again. Instead I propose that we just use the i_size itself to determine if there is a fast symlink, because there has never (AFAIK) been a kernel that created slow symlinks for files < 60 bytes in length. Cheers, Andreas -- Andreas Dilger Sr. Staff Engineer, Lustre Group Sun Microsystems of Canada, Inc. -- To unsubscribe from this list: send the line "unsubscribe linux-ext4" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html