mirror of https://gitee.com/openkylin/linux.git
xfs: set inode size after creating symlink
When XFS creates a new symlink, it writes its size to disk but not to the VFS inode. This causes i_size_read() to return 0 for that symlink until it is re-read from disk, for example when the system is rebooted. I found this inconsistency while protecting directories with eCryptFS. The command "stat path/to/symlink/in/ecryptfs" will report "Size: 0" if the symlink was created after the last reboot on an XFS root. Call i_size_write() in xfs_symlink() Signed-off-by: Jeffrey Mitchell <jeffrey.mitchell@starlab.io> Reviewed-by: Darrick J. Wong <djwong@kernel.org> Signed-off-by: Darrick J. Wong <djwong@kernel.org> Reviewed-by: Christoph Hellwig <hch@lst.de> Reviewed-by: Brian Foster <bfoster@redhat.com>
This commit is contained in:
parent
8321ddb2fa
commit
8aa921a953
|
@ -305,6 +305,7 @@ xfs_symlink(
|
|||
}
|
||||
ASSERT(pathlen == 0);
|
||||
}
|
||||
i_size_write(VFS_I(ip), ip->i_d.di_size);
|
||||
|
||||
/*
|
||||
* Create the directory entry for the symlink.
|
||||
|
|
Loading…
Reference in New Issue