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()
483 struct xfs_perag *pag, in xfs_iget_cache_hit() argument
550 error = xfs_iget_recycle(pag, ip); in xfs_iget_cache_hit()
599 struct xfs_perag *pag, in xfs_iget_cache_miss() argument
615 error = xfs_imap(pag, tp, ip->i_ino, &ip->i_imap, flags); in xfs_iget_cache_miss()
697 spin_lock(&pag->pag_ici_lock); in xfs_iget_cache_miss()
698 error = radix_tree_insert(&pag->pag_ici_root, agino, ip); in xfs_iget_cache_miss()
705 spin_unlock(&pag->pag_ici_lock); in xfs_iget_cache_miss()
712 spin_unlock(&pag->pag_ici_lock); in xfs_iget_cache_miss()
744 struct xfs_perag *pag; in xfs_iget() local
757 pag = xfs_perag_get(mp, XFS_INO_TO_AGNO(mp, ino)); in xfs_iget()
763 ip = radix_tree_lookup(&pag->pag_ici_root, agino); in xfs_iget()
766 error = xfs_iget_cache_hit(pag, ip, ino, flags, lock_flags); in xfs_iget()
777 error = xfs_iget_cache_miss(mp, pag, tp, ino, &ip, in xfs_iget()
782 xfs_perag_put(pag); in xfs_iget()
801 xfs_perag_put(pag); in xfs_iget()
864 struct xfs_perag *pag) in xfs_reclaim_inode() argument
922 spin_lock(&pag->pag_ici_lock); in xfs_reclaim_inode()
923 if (!radix_tree_delete(&pag->pag_ici_root, in xfs_reclaim_inode()
926 xfs_perag_clear_inode_tag(pag, NULLAGINO, XFS_ICI_RECLAIM_TAG); in xfs_reclaim_inode()
927 spin_unlock(&pag->pag_ici_lock); in xfs_reclaim_inode()
1015 struct xfs_perag *pag; in xfs_reclaim_inodes_count() local
1019 while ((pag = xfs_perag_get_tag(mp, ag, XFS_ICI_RECLAIM_TAG))) { in xfs_reclaim_inodes_count()
1020 ag = pag->pag_agno + 1; in xfs_reclaim_inodes_count()
1021 reclaimable += pag->pag_ici_reclaimable; in xfs_reclaim_inodes_count()
1022 xfs_perag_put(pag); in xfs_reclaim_inodes_count()
1167 struct xfs_perag *pag; in xfs_blockgc_set_iflag() local
1181 pag = xfs_perag_get(mp, XFS_INO_TO_AGNO(mp, ip->i_ino)); in xfs_blockgc_set_iflag()
1182 spin_lock(&pag->pag_ici_lock); in xfs_blockgc_set_iflag()
1184 xfs_perag_set_inode_tag(pag, XFS_INO_TO_AGINO(mp, ip->i_ino), in xfs_blockgc_set_iflag()
1187 spin_unlock(&pag->pag_ici_lock); in xfs_blockgc_set_iflag()
1188 xfs_perag_put(pag); in xfs_blockgc_set_iflag()
1205 struct xfs_perag *pag; in xfs_blockgc_clear_iflag() local
1218 pag = xfs_perag_get(mp, XFS_INO_TO_AGNO(mp, ip->i_ino)); in xfs_blockgc_clear_iflag()
1219 spin_lock(&pag->pag_ici_lock); in xfs_blockgc_clear_iflag()
1221 xfs_perag_clear_inode_tag(pag, XFS_INO_TO_AGINO(mp, ip->i_ino), in xfs_blockgc_clear_iflag()
1224 spin_unlock(&pag->pag_ici_lock); in xfs_blockgc_clear_iflag()
1225 xfs_perag_put(pag); in xfs_blockgc_clear_iflag()
1358 struct xfs_perag *pag; in xfs_blockgc_stop() local
1364 for_each_perag(mp, agno, pag) in xfs_blockgc_stop()
1365 cancel_delayed_work_sync(&pag->pag_blockgc_work); in xfs_blockgc_stop()
1374 struct xfs_perag *pag; in xfs_blockgc_start() local
1381 for_each_perag_tag(mp, agno, pag, XFS_ICI_BLOCKGC_TAG) in xfs_blockgc_start()
1382 xfs_blockgc_queue(pag); in xfs_blockgc_start()
1455 struct xfs_perag *pag = container_of(to_delayed_work(work), in xfs_blockgc_worker() local
1457 struct xfs_mount *mp = pag->pag_mount; in xfs_blockgc_worker()
1462 error = xfs_icwalk_ag(pag, XFS_ICWALK_BLOCKGC, NULL); in xfs_blockgc_worker()
1465 pag->pag_agno, error); in xfs_blockgc_worker()
1466 xfs_blockgc_queue(pag); in xfs_blockgc_worker()
1497 struct xfs_perag *pag; in xfs_blockgc_flush_all() local
1507 for_each_perag_tag(mp, agno, pag, XFS_ICI_BLOCKGC_TAG) in xfs_blockgc_flush_all()
1508 mod_delayed_work(pag->pag_mount->m_blockgc_wq, in xfs_blockgc_flush_all()
1509 &pag->pag_blockgc_work, 0); in xfs_blockgc_flush_all()
1511 for_each_perag_tag(mp, agno, pag, XFS_ICI_BLOCKGC_TAG) in xfs_blockgc_flush_all()
1512 flush_delayed_work(&pag->pag_blockgc_work); in xfs_blockgc_flush_all()
1622 struct xfs_perag *pag, in xfs_icwalk_process_inode() argument
1632 xfs_reclaim_inode(ip, pag); in xfs_icwalk_process_inode()
1644 struct xfs_perag *pag, in xfs_icwalk_ag() argument
1648 struct xfs_mount *mp = pag->pag_mount; in xfs_icwalk_ag()
1659 first_index = READ_ONCE(pag->pag_ici_reclaim_cursor); in xfs_icwalk_ag()
1670 nr_found = radix_tree_gang_lookup_tag(&pag->pag_ici_root, in xfs_icwalk_ag()
1701 if (XFS_INO_TO_AGNO(mp, ip->i_ino) != pag->pag_agno) in xfs_icwalk_ag()
1714 error = xfs_icwalk_process_inode(goal, batch[i], pag, in xfs_icwalk_ag()
1740 WRITE_ONCE(pag->pag_ici_reclaim_cursor, first_index); in xfs_icwalk_ag()
1757 struct xfs_perag *pag; in xfs_icwalk() local
1762 for_each_perag_tag(mp, agno, pag, goal) { in xfs_icwalk()
1763 error = xfs_icwalk_ag(pag, goal, icw); in xfs_icwalk()
1767 xfs_perag_rele(pag); in xfs_icwalk()
1808 struct xfs_perag *pag; in xfs_inodegc_set_reclaimable() local
1816 pag = xfs_perag_get(mp, XFS_INO_TO_AGNO(mp, ip->i_ino)); in xfs_inodegc_set_reclaimable()
1817 spin_lock(&pag->pag_ici_lock); in xfs_inodegc_set_reclaimable()
1823 xfs_perag_set_inode_tag(pag, XFS_INO_TO_AGINO(mp, ip->i_ino), in xfs_inodegc_set_reclaimable()
1827 spin_unlock(&pag->pag_ici_lock); in xfs_inodegc_set_reclaimable()
1828 xfs_perag_put(pag); in xfs_inodegc_set_reclaimable()