mirror of
https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
synced 2025-01-23 16:53:58 -05:00
xfs: increase rename inode reservation
xfs_rename can update up to 5 inodes: src_dp, target_dp, src_ip, target_ip and wip. So we need to increase the inode reservation to match. Signed-off-by: Allison Henderson <allison.henderson@oracle.com> Reviewed-by: Darrick J. Wong <djwong@kernel.org> Signed-off-by: Darrick J. Wong <djwong@kernel.org>
This commit is contained in:
parent
d08af40340
commit
e07ee6fe21
2 changed files with 3 additions and 3 deletions
|
@ -422,7 +422,7 @@ xfs_calc_itruncate_reservation_minlogsize(
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* In renaming a files we can modify:
|
* In renaming a files we can modify:
|
||||||
* the four inodes involved: 4 * inode size
|
* the five inodes involved: 5 * inode size
|
||||||
* the two directory btrees: 2 * (max depth + v2) * dir block size
|
* the two directory btrees: 2 * (max depth + v2) * dir block size
|
||||||
* the two directory bmap btrees: 2 * max depth * block size
|
* the two directory bmap btrees: 2 * max depth * block size
|
||||||
* And the bmap_finish transaction can free dir and bmap blocks (two sets
|
* And the bmap_finish transaction can free dir and bmap blocks (two sets
|
||||||
|
@ -437,7 +437,7 @@ xfs_calc_rename_reservation(
|
||||||
struct xfs_mount *mp)
|
struct xfs_mount *mp)
|
||||||
{
|
{
|
||||||
return XFS_DQUOT_LOGRES(mp) +
|
return XFS_DQUOT_LOGRES(mp) +
|
||||||
max((xfs_calc_inode_res(mp, 4) +
|
max((xfs_calc_inode_res(mp, 5) +
|
||||||
xfs_calc_buf_res(2 * XFS_DIROP_LOG_COUNT(mp),
|
xfs_calc_buf_res(2 * XFS_DIROP_LOG_COUNT(mp),
|
||||||
XFS_FSB_TO_B(mp, 1))),
|
XFS_FSB_TO_B(mp, 1))),
|
||||||
(xfs_calc_buf_res(7, mp->m_sb.sb_sectsize) +
|
(xfs_calc_buf_res(7, mp->m_sb.sb_sectsize) +
|
||||||
|
|
|
@ -2818,7 +2818,7 @@ retry:
|
||||||
* Lock all the participating inodes. Depending upon whether
|
* Lock all the participating inodes. Depending upon whether
|
||||||
* the target_name exists in the target directory, and
|
* the target_name exists in the target directory, and
|
||||||
* whether the target directory is the same as the source
|
* whether the target directory is the same as the source
|
||||||
* directory, we can lock from 2 to 4 inodes.
|
* directory, we can lock from 2 to 5 inodes.
|
||||||
*/
|
*/
|
||||||
xfs_lock_inodes(inodes, num_inodes, XFS_ILOCK_EXCL);
|
xfs_lock_inodes(inodes, num_inodes, XFS_ILOCK_EXCL);
|
||||||
|
|
||||||
|
|
Loading…
Add table
Reference in a new issue