Lines Matching refs:pag
49 static int xfs_icwalk_ag(struct xfs_perag *pag,
207 struct xfs_perag *pag) in xfs_blockgc_queue() argument
209 struct xfs_mount *mp = pag->pag_mount; in xfs_blockgc_queue()
215 if (radix_tree_tagged(&pag->pag_ici_root, XFS_ICI_BLOCKGC_TAG)) in xfs_blockgc_queue()
216 queue_delayed_work(pag->pag_mount->m_blockgc_wq, in xfs_blockgc_queue()
217 &pag->pag_blockgc_work, in xfs_blockgc_queue()
225 struct xfs_perag *pag, in xfs_perag_set_inode_tag() argument
229 struct xfs_mount *mp = pag->pag_mount; in xfs_perag_set_inode_tag()
232 lockdep_assert_held(&pag->pag_ici_lock); in xfs_perag_set_inode_tag()
234 was_tagged = radix_tree_tagged(&pag->pag_ici_root, tag); in xfs_perag_set_inode_tag()
235 radix_tree_tag_set(&pag->pag_ici_root, agino, tag); in xfs_perag_set_inode_tag()
238 pag->pag_ici_reclaimable++; in xfs_perag_set_inode_tag()
245 radix_tree_tag_set(&mp->m_perag_tree, pag->pag_agno, tag); in xfs_perag_set_inode_tag()
254 xfs_blockgc_queue(pag); in xfs_perag_set_inode_tag()
258 trace_xfs_perag_set_inode_tag(pag, _RET_IP_); in xfs_perag_set_inode_tag()
264 struct xfs_perag *pag, in xfs_perag_clear_inode_tag() argument
268 struct xfs_mount *mp = pag->pag_mount; in xfs_perag_clear_inode_tag()
270 lockdep_assert_held(&pag->pag_ici_lock); in xfs_perag_clear_inode_tag()
277 radix_tree_tag_clear(&pag->pag_ici_root, agino, tag); in xfs_perag_clear_inode_tag()
282 pag->pag_ici_reclaimable--; in xfs_perag_clear_inode_tag()
284 if (radix_tree_tagged(&pag->pag_ici_root, tag)) in xfs_perag_clear_inode_tag()
289 radix_tree_tag_clear(&mp->m_perag_tree, pag->pag_agno, tag); in xfs_perag_clear_inode_tag()
292 trace_xfs_perag_clear_inode_tag(pag, _RET_IP_); in xfs_perag_clear_inode_tag()
336 struct xfs_perag *pag, in xfs_iget_recycle() argument
378 spin_lock(&pag->pag_ici_lock); in xfs_iget_recycle()
388 xfs_perag_clear_inode_tag(pag, XFS_INO_TO_AGINO(mp, ip->i_ino), in xfs_iget_recycle()
392 spin_unlock(&pag->pag_ici_lock); in xfs_iget_recycle()
457 struct xfs_perag *pag, in xfs_iget_cache_hit() argument
524 error = xfs_iget_recycle(pag, ip); in xfs_iget_cache_hit()
573 struct xfs_perag *pag, in xfs_iget_cache_miss() argument
589 error = xfs_imap(pag, tp, ip->i_ino, &ip->i_imap, flags); in xfs_iget_cache_miss()
671 spin_lock(&pag->pag_ici_lock); in xfs_iget_cache_miss()
672 error = radix_tree_insert(&pag->pag_ici_root, agino, ip); in xfs_iget_cache_miss()
679 spin_unlock(&pag->pag_ici_lock); in xfs_iget_cache_miss()
686 spin_unlock(&pag->pag_ici_lock); in xfs_iget_cache_miss()
718 struct xfs_perag *pag; in xfs_iget() local
731 pag = xfs_perag_get(mp, XFS_INO_TO_AGNO(mp, ino)); in xfs_iget()
737 ip = radix_tree_lookup(&pag->pag_ici_root, agino); in xfs_iget()
740 error = xfs_iget_cache_hit(pag, ip, ino, flags, lock_flags); in xfs_iget()
751 error = xfs_iget_cache_miss(mp, pag, tp, ino, &ip, in xfs_iget()
756 xfs_perag_put(pag); in xfs_iget()
774 xfs_perag_put(pag); in xfs_iget()
875 struct xfs_perag *pag) in xfs_reclaim_inode() argument
933 spin_lock(&pag->pag_ici_lock); in xfs_reclaim_inode()
934 if (!radix_tree_delete(&pag->pag_ici_root, in xfs_reclaim_inode()
937 xfs_perag_clear_inode_tag(pag, NULLAGINO, XFS_ICI_RECLAIM_TAG); in xfs_reclaim_inode()
938 spin_unlock(&pag->pag_ici_lock); in xfs_reclaim_inode()
1026 struct xfs_perag *pag; in xfs_reclaim_inodes_count() local
1030 while ((pag = xfs_perag_get_tag(mp, ag, XFS_ICI_RECLAIM_TAG))) { in xfs_reclaim_inodes_count()
1031 ag = pag->pag_agno + 1; in xfs_reclaim_inodes_count()
1032 reclaimable += pag->pag_ici_reclaimable; in xfs_reclaim_inodes_count()
1033 xfs_perag_put(pag); in xfs_reclaim_inodes_count()
1178 struct xfs_perag *pag; in xfs_blockgc_set_iflag() local
1192 pag = xfs_perag_get(mp, XFS_INO_TO_AGNO(mp, ip->i_ino)); in xfs_blockgc_set_iflag()
1193 spin_lock(&pag->pag_ici_lock); in xfs_blockgc_set_iflag()
1195 xfs_perag_set_inode_tag(pag, XFS_INO_TO_AGINO(mp, ip->i_ino), in xfs_blockgc_set_iflag()
1198 spin_unlock(&pag->pag_ici_lock); in xfs_blockgc_set_iflag()
1199 xfs_perag_put(pag); in xfs_blockgc_set_iflag()
1216 struct xfs_perag *pag; in xfs_blockgc_clear_iflag() local
1229 pag = xfs_perag_get(mp, XFS_INO_TO_AGNO(mp, ip->i_ino)); in xfs_blockgc_clear_iflag()
1230 spin_lock(&pag->pag_ici_lock); in xfs_blockgc_clear_iflag()
1232 xfs_perag_clear_inode_tag(pag, XFS_INO_TO_AGINO(mp, ip->i_ino), in xfs_blockgc_clear_iflag()
1235 spin_unlock(&pag->pag_ici_lock); in xfs_blockgc_clear_iflag()
1236 xfs_perag_put(pag); in xfs_blockgc_clear_iflag()
1360 struct xfs_perag *pag; in xfs_blockgc_stop() local
1366 for_each_perag(mp, agno, pag) in xfs_blockgc_stop()
1367 cancel_delayed_work_sync(&pag->pag_blockgc_work); in xfs_blockgc_stop()
1376 struct xfs_perag *pag; in xfs_blockgc_start() local
1383 for_each_perag_tag(mp, agno, pag, XFS_ICI_BLOCKGC_TAG) in xfs_blockgc_start()
1384 xfs_blockgc_queue(pag); in xfs_blockgc_start()
1457 struct xfs_perag *pag = container_of(to_delayed_work(work), in xfs_blockgc_worker() local
1459 struct xfs_mount *mp = pag->pag_mount; in xfs_blockgc_worker()
1464 error = xfs_icwalk_ag(pag, XFS_ICWALK_BLOCKGC, NULL); in xfs_blockgc_worker()
1467 pag->pag_agno, error); in xfs_blockgc_worker()
1468 xfs_blockgc_queue(pag); in xfs_blockgc_worker()
1500 struct xfs_perag *pag; in xfs_blockgc_flush_all() local
1510 for_each_perag_tag(mp, agno, pag, XFS_ICI_BLOCKGC_TAG) in xfs_blockgc_flush_all()
1511 mod_delayed_work(pag->pag_mount->m_blockgc_wq, in xfs_blockgc_flush_all()
1512 &pag->pag_blockgc_work, 0); in xfs_blockgc_flush_all()
1514 for_each_perag_tag(mp, agno, pag, XFS_ICI_BLOCKGC_TAG) in xfs_blockgc_flush_all()
1515 flush_delayed_work(&pag->pag_blockgc_work); in xfs_blockgc_flush_all()
1625 struct xfs_perag *pag, in xfs_icwalk_process_inode() argument
1635 xfs_reclaim_inode(ip, pag); in xfs_icwalk_process_inode()
1647 struct xfs_perag *pag, in xfs_icwalk_ag() argument
1651 struct xfs_mount *mp = pag->pag_mount; in xfs_icwalk_ag()
1662 first_index = READ_ONCE(pag->pag_ici_reclaim_cursor); in xfs_icwalk_ag()
1673 nr_found = radix_tree_gang_lookup_tag(&pag->pag_ici_root, in xfs_icwalk_ag()
1704 if (XFS_INO_TO_AGNO(mp, ip->i_ino) != pag->pag_agno) in xfs_icwalk_ag()
1717 error = xfs_icwalk_process_inode(goal, batch[i], pag, in xfs_icwalk_ag()
1743 WRITE_ONCE(pag->pag_ici_reclaim_cursor, first_index); in xfs_icwalk_ag()
1760 struct xfs_perag *pag; in xfs_icwalk() local
1765 for_each_perag_tag(mp, agno, pag, goal) { in xfs_icwalk()
1766 error = xfs_icwalk_ag(pag, goal, icw); in xfs_icwalk()
1770 xfs_perag_rele(pag); in xfs_icwalk()
1811 struct xfs_perag *pag; in xfs_inodegc_set_reclaimable() local
1819 pag = xfs_perag_get(mp, XFS_INO_TO_AGNO(mp, ip->i_ino)); in xfs_inodegc_set_reclaimable()
1820 spin_lock(&pag->pag_ici_lock); in xfs_inodegc_set_reclaimable()
1826 xfs_perag_set_inode_tag(pag, XFS_INO_TO_AGINO(mp, ip->i_ino), in xfs_inodegc_set_reclaimable()
1830 spin_unlock(&pag->pag_ici_lock); in xfs_inodegc_set_reclaimable()
1831 xfs_perag_put(pag); in xfs_inodegc_set_reclaimable()