Backport from 'libxfs' of xfs kernel git repository: This fix has already been merged into xfs kernel git repository: Link: https://git.kernel.org/pub/scm/fs/xfs/xfs-linux.git/commit/?h=xfs-5.20-merge&id=031d166f968efba6e4f091ff75d0bb5206bb3918 And the original discussion for this patch can be found: Link: https://marc.info/?l=linux-xfs&m=166053185303094&w=2 Signed-off-by: Xiaole He <hexiaole@kylinos.cn>
49 lines
1.5 KiB
Diff
49 lines
1.5 KiB
Diff
From 0af83349e54583a41f157edebb0055e14c029355 Mon Sep 17 00:00:00 2001
|
|
From: hexiaole <hexiaole@kylinos.cn>
|
|
Date: Tue, 2 Aug 2022 11:08:47 +0800
|
|
Subject: [PATCH] libxfs: fix inode reservation space for removing transaction
|
|
|
|
In 'libxfs/xfs_trans_resv.c', the comment for transaction of removing a
|
|
directory entry mentions that there has 2 inode size of space to be
|
|
reserverd, but the actual code only count for 1 inode size:
|
|
|
|
/* libxfs/xfs_trans_resv.c begin */
|
|
/*
|
|
* For removing a directory entry we can modify:
|
|
* the parent directory inode: inode size
|
|
* the removed inode: inode size
|
|
...
|
|
xfs_calc_remove_reservation(
|
|
struct xfs_mount *mp)
|
|
{
|
|
return XFS_DQUOT_LOGRES(mp) +
|
|
xfs_calc_iunlink_add_reservation(mp) +
|
|
max((xfs_calc_inode_res(mp, 1) +
|
|
...
|
|
/* libxfs/xfs_trans_resv.c end */
|
|
|
|
Here only count for 1 inode size to be reserved in
|
|
'xfs_calc_inode_res(mp, 1)', rather than 2.
|
|
|
|
Signed-off-by: hexiaole <hexiaole@kylinos.cn>
|
|
---
|
|
libxfs/xfs_trans_resv.c | 2 +-
|
|
1 file changed, 1 insertion(+), 1 deletion(-)
|
|
|
|
diff --git a/libxfs/xfs_trans_resv.c b/libxfs/xfs_trans_resv.c
|
|
index 9ce7d8f..7638ef9 100644
|
|
--- a/libxfs/xfs_trans_resv.c
|
|
+++ b/libxfs/xfs_trans_resv.c
|
|
@@ -422,7 +422,7 @@ xfs_calc_remove_reservation(
|
|
{
|
|
return XFS_DQUOT_LOGRES(mp) +
|
|
xfs_calc_iunlink_add_reservation(mp) +
|
|
- max((xfs_calc_inode_res(mp, 1) +
|
|
+ max((xfs_calc_inode_res(mp, 2) +
|
|
xfs_calc_buf_res(XFS_DIROP_LOG_COUNT(mp),
|
|
XFS_FSB_TO_B(mp, 1))),
|
|
(xfs_calc_buf_res(4, mp->m_sb.sb_sectsize) +
|
|
--
|
|
2.27.0
|
|
|