xfs: optimize inline symlinks
By overallocating the in-core inode fork data buffer and zero terminating the link target in xfs_init_local_fork we can avoid the memory allocation in ->follow_link. Signed-off-by: Christoph Hellwig <hch@lst.de> Reviewed-by: Dave Chinner <dchinner@redhat.com> Signed-off-by: Dave Chinner <david@fromorbit.com>
This commit is contained in:
committed by
Dave Chinner
parent
bfe8804d90
commit
30ee052e12
@@ -131,6 +131,8 @@ xfs_readlink(
|
||||
|
||||
trace_xfs_readlink(ip);
|
||||
|
||||
ASSERT(!(ip->i_df.if_flags & XFS_IFINLINE));
|
||||
|
||||
if (XFS_FORCED_SHUTDOWN(mp))
|
||||
return -EIO;
|
||||
|
||||
@@ -150,12 +152,7 @@ xfs_readlink(
|
||||
}
|
||||
|
||||
|
||||
if (ip->i_df.if_flags & XFS_IFINLINE) {
|
||||
memcpy(link, ip->i_df.if_u1.if_data, pathlen);
|
||||
link[pathlen] = '\0';
|
||||
} else {
|
||||
error = xfs_readlink_bmap(ip, link);
|
||||
}
|
||||
error = xfs_readlink_bmap(ip, link);
|
||||
|
||||
out:
|
||||
xfs_iunlock(ip, XFS_ILOCK_SHARED);
|
||||
|
||||
Reference in New Issue
Block a user