Lines Matching defs:pag

49 static int xfs_icwalk_ag(struct xfs_perag *pag,
207 struct xfs_perag *pag)
209 struct xfs_mount *mp = pag->pag_mount;
215 if (radix_tree_tagged(&pag->pag_ici_root, XFS_ICI_BLOCKGC_TAG))
216 queue_delayed_work(pag->pag_mount->m_blockgc_wq,
217 &pag->pag_blockgc_work,
225 struct xfs_perag *pag,
229 struct xfs_mount *mp = pag->pag_mount;
232 lockdep_assert_held(&pag->pag_ici_lock);
234 was_tagged = radix_tree_tagged(&pag->pag_ici_root, tag);
235 radix_tree_tag_set(&pag->pag_ici_root, agino, tag);
238 pag->pag_ici_reclaimable++;
245 radix_tree_tag_set(&mp->m_perag_tree, pag->pag_agno, tag);
254 xfs_blockgc_queue(pag);
258 trace_xfs_perag_set_inode_tag(pag, _RET_IP_);
264 struct xfs_perag *pag,
268 struct xfs_mount *mp = pag->pag_mount;
270 lockdep_assert_held(&pag->pag_ici_lock);
277 radix_tree_tag_clear(&pag->pag_ici_root, agino, tag);
282 pag->pag_ici_reclaimable--;
284 if (radix_tree_tagged(&pag->pag_ici_root, tag))
289 radix_tree_tag_clear(&mp->m_perag_tree, pag->pag_agno, tag);
292 trace_xfs_perag_clear_inode_tag(pag, _RET_IP_);
336 struct xfs_perag *pag,
378 spin_lock(&pag->pag_ici_lock);
388 xfs_perag_clear_inode_tag(pag, XFS_INO_TO_AGINO(mp, ip->i_ino),
392 spin_unlock(&pag->pag_ici_lock);
483 struct xfs_perag *pag,
550 error = xfs_iget_recycle(pag, ip);
599 struct xfs_perag *pag,
615 error = xfs_imap(pag, tp, ip->i_ino, &ip->i_imap, flags);
697 spin_lock(&pag->pag_ici_lock);
698 error = radix_tree_insert(&pag->pag_ici_root, agino, ip);
705 spin_unlock(&pag->pag_ici_lock);
712 spin_unlock(&pag->pag_ici_lock);
744 struct xfs_perag *pag;
757 pag = xfs_perag_get(mp, XFS_INO_TO_AGNO(mp, ino));
763 ip = radix_tree_lookup(&pag->pag_ici_root, agino);
766 error = xfs_iget_cache_hit(pag, ip, ino, flags, lock_flags);
777 error = xfs_iget_cache_miss(mp, pag, tp, ino, &ip,
782 xfs_perag_put(pag);
801 xfs_perag_put(pag);
864 struct xfs_perag *pag)
922 spin_lock(&pag->pag_ici_lock);
923 if (!radix_tree_delete(&pag->pag_ici_root,
926 xfs_perag_clear_inode_tag(pag, NULLAGINO, XFS_ICI_RECLAIM_TAG);
927 spin_unlock(&pag->pag_ici_lock);
1015 struct xfs_perag *pag;
1019 while ((pag = xfs_perag_get_tag(mp, ag, XFS_ICI_RECLAIM_TAG))) {
1020 ag = pag->pag_agno + 1;
1021 reclaimable += pag->pag_ici_reclaimable;
1022 xfs_perag_put(pag);
1167 struct xfs_perag *pag;
1181 pag = xfs_perag_get(mp, XFS_INO_TO_AGNO(mp, ip->i_ino));
1182 spin_lock(&pag->pag_ici_lock);
1184 xfs_perag_set_inode_tag(pag, XFS_INO_TO_AGINO(mp, ip->i_ino),
1187 spin_unlock(&pag->pag_ici_lock);
1188 xfs_perag_put(pag);
1205 struct xfs_perag *pag;
1218 pag = xfs_perag_get(mp, XFS_INO_TO_AGNO(mp, ip->i_ino));
1219 spin_lock(&pag->pag_ici_lock);
1221 xfs_perag_clear_inode_tag(pag, XFS_INO_TO_AGINO(mp, ip->i_ino),
1224 spin_unlock(&pag->pag_ici_lock);
1225 xfs_perag_put(pag);
1358 struct xfs_perag *pag;
1364 for_each_perag(mp, agno, pag)
1365 cancel_delayed_work_sync(&pag->pag_blockgc_work);
1374 struct xfs_perag *pag;
1381 for_each_perag_tag(mp, agno, pag, XFS_ICI_BLOCKGC_TAG)
1382 xfs_blockgc_queue(pag);
1455 struct xfs_perag *pag = container_of(to_delayed_work(work),
1457 struct xfs_mount *mp = pag->pag_mount;
1462 error = xfs_icwalk_ag(pag, XFS_ICWALK_BLOCKGC, NULL);
1465 pag->pag_agno, error);
1466 xfs_blockgc_queue(pag);
1497 struct xfs_perag *pag;
1507 for_each_perag_tag(mp, agno, pag, XFS_ICI_BLOCKGC_TAG)
1508 mod_delayed_work(pag->pag_mount->m_blockgc_wq,
1509 &pag->pag_blockgc_work, 0);
1511 for_each_perag_tag(mp, agno, pag, XFS_ICI_BLOCKGC_TAG)
1512 flush_delayed_work(&pag->pag_blockgc_work);
1622 struct xfs_perag *pag,
1632 xfs_reclaim_inode(ip, pag);
1639 * For a given per-AG structure @pag and a goal, grab qualifying inodes and
1644 struct xfs_perag *pag,
1648 struct xfs_mount *mp = pag->pag_mount;
1659 first_index = READ_ONCE(pag->pag_ici_reclaim_cursor);
1670 nr_found = radix_tree_gang_lookup_tag(&pag->pag_ici_root,
1701 if (XFS_INO_TO_AGNO(mp, ip->i_ino) != pag->pag_agno)
1714 error = xfs_icwalk_process_inode(goal, batch[i], pag,
1740 WRITE_ONCE(pag->pag_ici_reclaim_cursor, first_index);
1757 struct xfs_perag *pag;
1762 for_each_perag_tag(mp, agno, pag, goal) {
1763 error = xfs_icwalk_ag(pag, goal, icw);
1767 xfs_perag_rele(pag);
1808 struct xfs_perag *pag;
1816 pag = xfs_perag_get(mp, XFS_INO_TO_AGNO(mp, ip->i_ino));
1817 spin_lock(&pag->pag_ici_lock);
1823 xfs_perag_set_inode_tag(pag, XFS_INO_TO_AGINO(mp, ip->i_ino),
1827 spin_unlock(&pag->pag_ici_lock);
1828 xfs_perag_put(pag);