Lines Matching refs:pag
48 static int xfs_icwalk_ag(struct xfs_perag *pag,
204 struct xfs_perag *pag) in xfs_blockgc_queue() argument
206 struct xfs_mount *mp = pag->pag_mount; in xfs_blockgc_queue()
212 if (radix_tree_tagged(&pag->pag_ici_root, XFS_ICI_BLOCKGC_TAG)) in xfs_blockgc_queue()
213 queue_delayed_work(pag->pag_mount->m_blockgc_wq, in xfs_blockgc_queue()
214 &pag->pag_blockgc_work, in xfs_blockgc_queue()
222 struct xfs_perag *pag, in xfs_perag_set_inode_tag() argument
226 struct xfs_mount *mp = pag->pag_mount; in xfs_perag_set_inode_tag()
229 lockdep_assert_held(&pag->pag_ici_lock); in xfs_perag_set_inode_tag()
231 was_tagged = radix_tree_tagged(&pag->pag_ici_root, tag); in xfs_perag_set_inode_tag()
232 radix_tree_tag_set(&pag->pag_ici_root, agino, tag); in xfs_perag_set_inode_tag()
235 pag->pag_ici_reclaimable++; in xfs_perag_set_inode_tag()
242 radix_tree_tag_set(&mp->m_perag_tree, pag->pag_agno, tag); in xfs_perag_set_inode_tag()
251 xfs_blockgc_queue(pag); in xfs_perag_set_inode_tag()
255 trace_xfs_perag_set_inode_tag(mp, pag->pag_agno, tag, _RET_IP_); in xfs_perag_set_inode_tag()
261 struct xfs_perag *pag, in xfs_perag_clear_inode_tag() argument
265 struct xfs_mount *mp = pag->pag_mount; in xfs_perag_clear_inode_tag()
267 lockdep_assert_held(&pag->pag_ici_lock); in xfs_perag_clear_inode_tag()
274 radix_tree_tag_clear(&pag->pag_ici_root, agino, tag); in xfs_perag_clear_inode_tag()
279 pag->pag_ici_reclaimable--; in xfs_perag_clear_inode_tag()
281 if (radix_tree_tagged(&pag->pag_ici_root, tag)) in xfs_perag_clear_inode_tag()
286 radix_tree_tag_clear(&mp->m_perag_tree, pag->pag_agno, tag); in xfs_perag_clear_inode_tag()
289 trace_xfs_perag_clear_inode_tag(mp, pag->pag_agno, tag, _RET_IP_); in xfs_perag_clear_inode_tag()
332 struct xfs_perag *pag, in xfs_iget_recycle() argument
370 spin_lock(&pag->pag_ici_lock); in xfs_iget_recycle()
380 xfs_perag_clear_inode_tag(pag, XFS_INO_TO_AGINO(mp, ip->i_ino), in xfs_iget_recycle()
384 spin_unlock(&pag->pag_ici_lock); in xfs_iget_recycle()
449 struct xfs_perag *pag, in xfs_iget_cache_hit() argument
516 error = xfs_iget_recycle(pag, ip); in xfs_iget_cache_hit()
563 struct xfs_perag *pag, in xfs_iget_cache_miss() argument
661 spin_lock(&pag->pag_ici_lock); in xfs_iget_cache_miss()
662 error = radix_tree_insert(&pag->pag_ici_root, agino, ip); in xfs_iget_cache_miss()
669 spin_unlock(&pag->pag_ici_lock); in xfs_iget_cache_miss()
676 spin_unlock(&pag->pag_ici_lock); in xfs_iget_cache_miss()
708 struct xfs_perag *pag; in xfs_iget() local
721 pag = xfs_perag_get(mp, XFS_INO_TO_AGNO(mp, ino)); in xfs_iget()
727 ip = radix_tree_lookup(&pag->pag_ici_root, agino); in xfs_iget()
730 error = xfs_iget_cache_hit(pag, ip, ino, flags, lock_flags); in xfs_iget()
741 error = xfs_iget_cache_miss(mp, pag, tp, ino, &ip, in xfs_iget()
746 xfs_perag_put(pag); in xfs_iget()
763 xfs_perag_put(pag); in xfs_iget()
864 struct xfs_perag *pag) in xfs_reclaim_inode() argument
914 spin_lock(&pag->pag_ici_lock); in xfs_reclaim_inode()
915 if (!radix_tree_delete(&pag->pag_ici_root, in xfs_reclaim_inode()
918 xfs_perag_clear_inode_tag(pag, NULLAGINO, XFS_ICI_RECLAIM_TAG); in xfs_reclaim_inode()
919 spin_unlock(&pag->pag_ici_lock); in xfs_reclaim_inode()
1007 struct xfs_perag *pag; in xfs_reclaim_inodes_count() local
1011 while ((pag = xfs_perag_get_tag(mp, ag, XFS_ICI_RECLAIM_TAG))) { in xfs_reclaim_inodes_count()
1012 ag = pag->pag_agno + 1; in xfs_reclaim_inodes_count()
1013 reclaimable += pag->pag_ici_reclaimable; in xfs_reclaim_inodes_count()
1014 xfs_perag_put(pag); in xfs_reclaim_inodes_count()
1159 struct xfs_perag *pag; in xfs_blockgc_set_iflag() local
1173 pag = xfs_perag_get(mp, XFS_INO_TO_AGNO(mp, ip->i_ino)); in xfs_blockgc_set_iflag()
1174 spin_lock(&pag->pag_ici_lock); in xfs_blockgc_set_iflag()
1176 xfs_perag_set_inode_tag(pag, XFS_INO_TO_AGINO(mp, ip->i_ino), in xfs_blockgc_set_iflag()
1179 spin_unlock(&pag->pag_ici_lock); in xfs_blockgc_set_iflag()
1180 xfs_perag_put(pag); in xfs_blockgc_set_iflag()
1197 struct xfs_perag *pag; in xfs_blockgc_clear_iflag() local
1210 pag = xfs_perag_get(mp, XFS_INO_TO_AGNO(mp, ip->i_ino)); in xfs_blockgc_clear_iflag()
1211 spin_lock(&pag->pag_ici_lock); in xfs_blockgc_clear_iflag()
1213 xfs_perag_clear_inode_tag(pag, XFS_INO_TO_AGINO(mp, ip->i_ino), in xfs_blockgc_clear_iflag()
1216 spin_unlock(&pag->pag_ici_lock); in xfs_blockgc_clear_iflag()
1217 xfs_perag_put(pag); in xfs_blockgc_clear_iflag()
1341 struct xfs_perag *pag; in xfs_blockgc_stop() local
1347 for_each_perag(mp, agno, pag) in xfs_blockgc_stop()
1348 cancel_delayed_work_sync(&pag->pag_blockgc_work); in xfs_blockgc_stop()
1357 struct xfs_perag *pag; in xfs_blockgc_start() local
1364 for_each_perag_tag(mp, agno, pag, XFS_ICI_BLOCKGC_TAG) in xfs_blockgc_start()
1365 xfs_blockgc_queue(pag); in xfs_blockgc_start()
1438 struct xfs_perag *pag = container_of(to_delayed_work(work), in xfs_blockgc_worker() local
1440 struct xfs_mount *mp = pag->pag_mount; in xfs_blockgc_worker()
1445 error = xfs_icwalk_ag(pag, XFS_ICWALK_BLOCKGC, NULL); in xfs_blockgc_worker()
1448 pag->pag_agno, error); in xfs_blockgc_worker()
1449 xfs_blockgc_queue(pag); in xfs_blockgc_worker()
1481 struct xfs_perag *pag; in xfs_blockgc_flush_all() local
1491 for_each_perag_tag(mp, agno, pag, XFS_ICI_BLOCKGC_TAG) in xfs_blockgc_flush_all()
1492 mod_delayed_work(pag->pag_mount->m_blockgc_wq, in xfs_blockgc_flush_all()
1493 &pag->pag_blockgc_work, 0); in xfs_blockgc_flush_all()
1495 for_each_perag_tag(mp, agno, pag, XFS_ICI_BLOCKGC_TAG) in xfs_blockgc_flush_all()
1496 flush_delayed_work(&pag->pag_blockgc_work); in xfs_blockgc_flush_all()
1606 struct xfs_perag *pag, in xfs_icwalk_process_inode() argument
1616 xfs_reclaim_inode(ip, pag); in xfs_icwalk_process_inode()
1628 struct xfs_perag *pag, in xfs_icwalk_ag() argument
1632 struct xfs_mount *mp = pag->pag_mount; in xfs_icwalk_ag()
1643 first_index = READ_ONCE(pag->pag_ici_reclaim_cursor); in xfs_icwalk_ag()
1654 nr_found = radix_tree_gang_lookup_tag(&pag->pag_ici_root, in xfs_icwalk_ag()
1685 if (XFS_INO_TO_AGNO(mp, ip->i_ino) != pag->pag_agno) in xfs_icwalk_ag()
1698 error = xfs_icwalk_process_inode(goal, batch[i], pag, in xfs_icwalk_ag()
1724 WRITE_ONCE(pag->pag_ici_reclaim_cursor, first_index); in xfs_icwalk_ag()
1741 struct xfs_perag *pag; in xfs_icwalk() local
1746 for_each_perag_tag(mp, agno, pag, goal) { in xfs_icwalk()
1747 error = xfs_icwalk_ag(pag, goal, icw); in xfs_icwalk()
1751 xfs_perag_put(pag); in xfs_icwalk()
1792 struct xfs_perag *pag; in xfs_inodegc_set_reclaimable() local
1800 pag = xfs_perag_get(mp, XFS_INO_TO_AGNO(mp, ip->i_ino)); in xfs_inodegc_set_reclaimable()
1801 spin_lock(&pag->pag_ici_lock); in xfs_inodegc_set_reclaimable()
1807 xfs_perag_set_inode_tag(pag, XFS_INO_TO_AGINO(mp, ip->i_ino), in xfs_inodegc_set_reclaimable()
1811 spin_unlock(&pag->pag_ici_lock); in xfs_inodegc_set_reclaimable()
1812 xfs_perag_put(pag); in xfs_inodegc_set_reclaimable()