提交 5710c2b2 编写于 作者: L Linus Torvalds

Merge branch 'for-linus' of git://oss.sgi.com/xfs/xfs

* 'for-linus' of git://oss.sgi.com/xfs/xfs:
  xfs: properly account for reclaimed inodes
...@@ -668,14 +668,11 @@ xfs_inode_set_reclaim_tag( ...@@ -668,14 +668,11 @@ xfs_inode_set_reclaim_tag(
xfs_perag_put(pag); xfs_perag_put(pag);
} }
void STATIC void
__xfs_inode_clear_reclaim_tag( __xfs_inode_clear_reclaim(
xfs_mount_t *mp,
xfs_perag_t *pag, xfs_perag_t *pag,
xfs_inode_t *ip) xfs_inode_t *ip)
{ {
radix_tree_tag_clear(&pag->pag_ici_root,
XFS_INO_TO_AGINO(mp, ip->i_ino), XFS_ICI_RECLAIM_TAG);
pag->pag_ici_reclaimable--; pag->pag_ici_reclaimable--;
if (!pag->pag_ici_reclaimable) { if (!pag->pag_ici_reclaimable) {
/* clear the reclaim tag from the perag radix tree */ /* clear the reclaim tag from the perag radix tree */
...@@ -689,6 +686,17 @@ __xfs_inode_clear_reclaim_tag( ...@@ -689,6 +686,17 @@ __xfs_inode_clear_reclaim_tag(
} }
} }
void
__xfs_inode_clear_reclaim_tag(
xfs_mount_t *mp,
xfs_perag_t *pag,
xfs_inode_t *ip)
{
radix_tree_tag_clear(&pag->pag_ici_root,
XFS_INO_TO_AGINO(mp, ip->i_ino), XFS_ICI_RECLAIM_TAG);
__xfs_inode_clear_reclaim(pag, ip);
}
/* /*
* Inodes in different states need to be treated differently, and the return * Inodes in different states need to be treated differently, and the return
* value of xfs_iflush is not sufficient to get this right. The following table * value of xfs_iflush is not sufficient to get this right. The following table
...@@ -838,6 +846,7 @@ xfs_reclaim_inode( ...@@ -838,6 +846,7 @@ xfs_reclaim_inode(
if (!radix_tree_delete(&pag->pag_ici_root, if (!radix_tree_delete(&pag->pag_ici_root,
XFS_INO_TO_AGINO(ip->i_mount, ip->i_ino))) XFS_INO_TO_AGINO(ip->i_mount, ip->i_ino)))
ASSERT(0); ASSERT(0);
__xfs_inode_clear_reclaim(pag, ip);
write_unlock(&pag->pag_ici_lock); write_unlock(&pag->pag_ici_lock);
/* /*
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册