Message ID | 1401709168-27403-1-git-send-email-wenqing.lz@taobao.com |
---|---|
State | Accepted, archived |
Headers | show |
On Mon, Jun 02, 2014 at 07:39:28PM +0800, Zheng Liu wrote: > From: Zheng Liu <wenqing.lz@taobao.com> > > This commit tries to fix a bug that we can't read symlink properly with > inline data feature when the length of symlink is greater than 60 bytes > but less than extra space.... Applied, thanks. > + if (ext4_has_inline_data(inode)) > + return 0; > + I am wondering though, as we add ext4_has_inline_data() to more and more codepaths, whether we might be better off making this an inline function in ext4.h. We should see how much such a change bloats the text sizes, and whether there is any measurable CPU difference. Cheers, - Ted -- To unsubscribe from this list: send the line "unsubscribe linux-ext4" in the body of a message to majordomo@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html
diff --git a/fs/ext4/inode.c b/fs/ext4/inode.c index 55f999a..bc5e4c1 100644 --- a/fs/ext4/inode.c +++ b/fs/ext4/inode.c @@ -148,6 +148,9 @@ static int ext4_inode_is_fast_symlink(struct inode *inode) int ea_blocks = EXT4_I(inode)->i_file_acl ? EXT4_CLUSTER_SIZE(inode->i_sb) >> 9 : 0; + if (ext4_has_inline_data(inode)) + return 0; + return (S_ISLNK(inode->i_mode) && inode->i_blocks - ea_blocks == 0); }