Lines Matching refs:ip

74 	struct xfs_inode	*ip;  in xfs_inode_alloc()  local
80 ip = kmem_cache_alloc(xfs_inode_cache, GFP_KERNEL | __GFP_NOFAIL); in xfs_inode_alloc()
82 if (inode_init_always(mp->m_super, VFS_I(ip))) { in xfs_inode_alloc()
83 kmem_cache_free(xfs_inode_cache, ip); in xfs_inode_alloc()
88 VFS_I(ip)->i_mode = 0; in xfs_inode_alloc()
89 VFS_I(ip)->i_state = 0; in xfs_inode_alloc()
92 ASSERT(atomic_read(&ip->i_pincount) == 0); in xfs_inode_alloc()
93 ASSERT(ip->i_ino == 0); in xfs_inode_alloc()
96 ip->i_ino = ino; in xfs_inode_alloc()
97 ip->i_mount = mp; in xfs_inode_alloc()
98 memset(&ip->i_imap, 0, sizeof(struct xfs_imap)); in xfs_inode_alloc()
99 ip->i_afp = NULL; in xfs_inode_alloc()
100 ip->i_cowfp = NULL; in xfs_inode_alloc()
101 memset(&ip->i_df, 0, sizeof(ip->i_df)); in xfs_inode_alloc()
102 ip->i_flags = 0; in xfs_inode_alloc()
103 ip->i_delayed_blks = 0; in xfs_inode_alloc()
104 ip->i_diflags2 = mp->m_ino_geo.new_diflags2; in xfs_inode_alloc()
105 ip->i_nblocks = 0; in xfs_inode_alloc()
106 ip->i_forkoff = 0; in xfs_inode_alloc()
107 ip->i_sick = 0; in xfs_inode_alloc()
108 ip->i_checked = 0; in xfs_inode_alloc()
109 INIT_WORK(&ip->i_ioend_work, xfs_end_io); in xfs_inode_alloc()
110 INIT_LIST_HEAD(&ip->i_ioend_list); in xfs_inode_alloc()
111 spin_lock_init(&ip->i_ioend_lock); in xfs_inode_alloc()
113 return ip; in xfs_inode_alloc()
121 struct xfs_inode *ip = XFS_I(inode); in xfs_inode_free_callback() local
123 switch (VFS_I(ip)->i_mode & S_IFMT) { in xfs_inode_free_callback()
127 xfs_idestroy_fork(&ip->i_df); in xfs_inode_free_callback()
131 if (ip->i_afp) { in xfs_inode_free_callback()
132 xfs_idestroy_fork(ip->i_afp); in xfs_inode_free_callback()
133 kmem_cache_free(xfs_ifork_cache, ip->i_afp); in xfs_inode_free_callback()
135 if (ip->i_cowfp) { in xfs_inode_free_callback()
136 xfs_idestroy_fork(ip->i_cowfp); in xfs_inode_free_callback()
137 kmem_cache_free(xfs_ifork_cache, ip->i_cowfp); in xfs_inode_free_callback()
139 if (ip->i_itemp) { in xfs_inode_free_callback()
141 &ip->i_itemp->ili_item.li_flags)); in xfs_inode_free_callback()
142 xfs_inode_item_destroy(ip); in xfs_inode_free_callback()
143 ip->i_itemp = NULL; in xfs_inode_free_callback()
146 kmem_cache_free(xfs_inode_cache, ip); in xfs_inode_free_callback()
151 struct xfs_inode *ip) in __xfs_inode_free() argument
154 ASSERT(atomic_read(&ip->i_pincount) == 0); in __xfs_inode_free()
155 ASSERT(!ip->i_itemp || list_empty(&ip->i_itemp->ili_item.li_bio_list)); in __xfs_inode_free()
156 XFS_STATS_DEC(ip->i_mount, vn_active); in __xfs_inode_free()
158 call_rcu(&VFS_I(ip)->i_rcu, xfs_inode_free_callback); in __xfs_inode_free()
163 struct xfs_inode *ip) in xfs_inode_free() argument
165 ASSERT(!xfs_iflags_test(ip, XFS_IFLUSHING)); in xfs_inode_free()
173 spin_lock(&ip->i_flags_lock); in xfs_inode_free()
174 ip->i_flags = XFS_IRECLAIM; in xfs_inode_free()
175 ip->i_ino = 0; in xfs_inode_free()
176 spin_unlock(&ip->i_flags_lock); in xfs_inode_free()
178 __xfs_inode_free(ip); in xfs_inode_free()
333 struct xfs_inode *ip) __releases(&ip->i_flags_lock) in xfs_iget_recycle() argument
335 struct xfs_mount *mp = ip->i_mount; in xfs_iget_recycle()
336 struct inode *inode = VFS_I(ip); in xfs_iget_recycle()
339 trace_xfs_iget_recycle(ip); in xfs_iget_recycle()
347 ip->i_flags |= XFS_IRECLAIM; in xfs_iget_recycle()
349 spin_unlock(&ip->i_flags_lock); in xfs_iget_recycle()
360 spin_lock(&ip->i_flags_lock); in xfs_iget_recycle()
361 ip->i_flags &= ~(XFS_INEW | XFS_IRECLAIM); in xfs_iget_recycle()
362 ASSERT(ip->i_flags & XFS_IRECLAIMABLE); in xfs_iget_recycle()
363 spin_unlock(&ip->i_flags_lock); in xfs_iget_recycle()
366 trace_xfs_iget_recycle_fail(ip); in xfs_iget_recycle()
371 spin_lock(&ip->i_flags_lock); in xfs_iget_recycle()
378 ip->i_flags &= ~XFS_IRECLAIM_RESET_FLAGS; in xfs_iget_recycle()
379 ip->i_flags |= XFS_INEW; in xfs_iget_recycle()
380 xfs_perag_clear_inode_tag(pag, XFS_INO_TO_AGINO(mp, ip->i_ino), in xfs_iget_recycle()
383 spin_unlock(&ip->i_flags_lock); in xfs_iget_recycle()
401 struct xfs_inode *ip, in xfs_iget_check_free_state() argument
406 if (VFS_I(ip)->i_mode != 0) { in xfs_iget_check_free_state()
407 xfs_warn(ip->i_mount, in xfs_iget_check_free_state()
409 ip->i_ino, VFS_I(ip)->i_mode); in xfs_iget_check_free_state()
413 if (ip->i_nblocks != 0) { in xfs_iget_check_free_state()
414 xfs_warn(ip->i_mount, in xfs_iget_check_free_state()
416 ip->i_ino); in xfs_iget_check_free_state()
423 if (VFS_I(ip)->i_mode == 0) in xfs_iget_check_free_state()
450 struct xfs_inode *ip, in xfs_iget_cache_hit() argument
455 struct inode *inode = VFS_I(ip); in xfs_iget_cache_hit()
456 struct xfs_mount *mp = ip->i_mount; in xfs_iget_cache_hit()
466 spin_lock(&ip->i_flags_lock); in xfs_iget_cache_hit()
467 if (ip->i_ino != ino) in xfs_iget_cache_hit()
488 if (ip->i_flags & (XFS_INEW | XFS_IRECLAIM | XFS_INACTIVATING)) in xfs_iget_cache_hit()
491 if (ip->i_flags & XFS_NEED_INACTIVE) { in xfs_iget_cache_hit()
493 if (VFS_I(ip)->i_nlink == 0) { in xfs_iget_cache_hit()
504 error = xfs_iget_check_free_state(ip, flags); in xfs_iget_cache_hit()
510 (ip->i_flags & XFS_IRECLAIMABLE)) in xfs_iget_cache_hit()
514 if (ip->i_flags & XFS_IRECLAIMABLE) { in xfs_iget_cache_hit()
516 error = xfs_iget_recycle(pag, ip); in xfs_iget_cache_hit()
525 spin_unlock(&ip->i_flags_lock); in xfs_iget_cache_hit()
527 trace_xfs_iget_hit(ip); in xfs_iget_cache_hit()
531 xfs_ilock(ip, lock_flags); in xfs_iget_cache_hit()
534 xfs_iflags_clear(ip, XFS_ISTALE); in xfs_iget_cache_hit()
540 trace_xfs_iget_skip(ip); in xfs_iget_cache_hit()
544 spin_unlock(&ip->i_flags_lock); in xfs_iget_cache_hit()
549 spin_unlock(&ip->i_flags_lock); in xfs_iget_cache_hit()
570 struct xfs_inode *ip; in xfs_iget_cache_miss() local
575 ip = xfs_inode_alloc(mp, ino); in xfs_iget_cache_miss()
576 if (!ip) in xfs_iget_cache_miss()
579 error = xfs_imap(mp, tp, ip->i_ino, &ip->i_imap, flags); in xfs_iget_cache_miss()
595 VFS_I(ip)->i_generation = prandom_u32(); in xfs_iget_cache_miss()
599 error = xfs_imap_to_bp(mp, tp, &ip->i_imap, &bp); in xfs_iget_cache_miss()
603 error = xfs_inode_from_disk(ip, in xfs_iget_cache_miss()
604 xfs_buf_offset(bp, ip->i_imap.im_boffset)); in xfs_iget_cache_miss()
613 trace_xfs_iget_miss(ip); in xfs_iget_cache_miss()
619 error = xfs_iget_check_free_state(ip, flags); in xfs_iget_cache_miss()
639 if (!xfs_ilock_nowait(ip, lock_flags)) in xfs_iget_cache_miss()
654 d_mark_dontcache(VFS_I(ip)); in xfs_iget_cache_miss()
655 ip->i_udquot = NULL; in xfs_iget_cache_miss()
656 ip->i_gdquot = NULL; in xfs_iget_cache_miss()
657 ip->i_pdquot = NULL; in xfs_iget_cache_miss()
658 xfs_iflags_set(ip, iflags); in xfs_iget_cache_miss()
662 error = radix_tree_insert(&pag->pag_ici_root, agino, ip); in xfs_iget_cache_miss()
672 *ipp = ip; in xfs_iget_cache_miss()
679 xfs_iunlock(ip, lock_flags); in xfs_iget_cache_miss()
681 __destroy_inode(VFS_I(ip)); in xfs_iget_cache_miss()
682 xfs_inode_free(ip); in xfs_iget_cache_miss()
707 struct xfs_inode *ip; in xfs_iget() local
727 ip = radix_tree_lookup(&pag->pag_ici_root, agino); in xfs_iget()
729 if (ip) { 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()
748 *ipp = ip; in xfs_iget()
754 if (xfs_iflags_test(ip, XFS_INEW) && VFS_I(ip)->i_mode != 0) in xfs_iget()
755 xfs_setup_existing_inode(ip); in xfs_iget()
793 struct xfs_inode *ip; in xfs_icache_inode_is_allocated() local
796 error = xfs_iget(mp, tp, ino, XFS_IGET_INCORE, 0, &ip); in xfs_icache_inode_is_allocated()
800 *inuse = !!(VFS_I(ip)->i_mode); in xfs_icache_inode_is_allocated()
801 xfs_irele(ip); in xfs_icache_inode_is_allocated()
824 struct xfs_inode *ip, in xfs_reclaim_igrab() argument
829 spin_lock(&ip->i_flags_lock); in xfs_reclaim_igrab()
830 if (!__xfs_iflags_test(ip, XFS_IRECLAIMABLE) || in xfs_reclaim_igrab()
831 __xfs_iflags_test(ip, XFS_IRECLAIM)) { in xfs_reclaim_igrab()
833 spin_unlock(&ip->i_flags_lock); in xfs_reclaim_igrab()
838 if (ip->i_sick && in xfs_reclaim_igrab()
840 spin_unlock(&ip->i_flags_lock); in xfs_reclaim_igrab()
844 __xfs_iflags_set(ip, XFS_IRECLAIM); in xfs_reclaim_igrab()
845 spin_unlock(&ip->i_flags_lock); in xfs_reclaim_igrab()
863 struct xfs_inode *ip, in xfs_reclaim_inode() argument
866 xfs_ino_t ino = ip->i_ino; /* for radix_tree_delete */ in xfs_reclaim_inode()
868 if (!xfs_ilock_nowait(ip, XFS_ILOCK_EXCL)) in xfs_reclaim_inode()
870 if (xfs_iflags_test_and_set(ip, XFS_IFLUSHING)) in xfs_reclaim_inode()
873 if (xfs_is_shutdown(ip->i_mount)) { in xfs_reclaim_inode()
874 xfs_iunpin_wait(ip); in xfs_reclaim_inode()
875 xfs_iflush_abort(ip); in xfs_reclaim_inode()
878 if (xfs_ipincount(ip)) in xfs_reclaim_inode()
880 if (!xfs_inode_clean(ip)) in xfs_reclaim_inode()
883 xfs_iflags_clear(ip, XFS_IFLUSHING); in xfs_reclaim_inode()
885 trace_xfs_inode_reclaiming(ip); in xfs_reclaim_inode()
897 spin_lock(&ip->i_flags_lock); in xfs_reclaim_inode()
898 ip->i_flags = XFS_IRECLAIM; in xfs_reclaim_inode()
899 ip->i_ino = 0; in xfs_reclaim_inode()
900 ip->i_sick = 0; in xfs_reclaim_inode()
901 ip->i_checked = 0; in xfs_reclaim_inode()
902 spin_unlock(&ip->i_flags_lock); in xfs_reclaim_inode()
904 xfs_iunlock(ip, XFS_ILOCK_EXCL); in xfs_reclaim_inode()
906 XFS_STATS_INC(ip->i_mount, xs_ig_reclaims); in xfs_reclaim_inode()
916 XFS_INO_TO_AGINO(ip->i_mount, ino))) in xfs_reclaim_inode()
929 xfs_ilock(ip, XFS_ILOCK_EXCL); in xfs_reclaim_inode()
930 ASSERT(!ip->i_udquot && !ip->i_gdquot && !ip->i_pdquot); in xfs_reclaim_inode()
931 xfs_iunlock(ip, XFS_ILOCK_EXCL); in xfs_reclaim_inode()
932 ASSERT(xfs_inode_clean(ip)); in xfs_reclaim_inode()
934 __xfs_inode_free(ip); in xfs_reclaim_inode()
938 xfs_iflags_clear(ip, XFS_IFLUSHING); in xfs_reclaim_inode()
940 xfs_iunlock(ip, XFS_ILOCK_EXCL); in xfs_reclaim_inode()
942 xfs_iflags_clear(ip, XFS_IRECLAIM); in xfs_reclaim_inode()
1021 struct xfs_inode *ip, in xfs_icwalk_match_id() argument
1025 !uid_eq(VFS_I(ip)->i_uid, icw->icw_uid)) in xfs_icwalk_match_id()
1029 !gid_eq(VFS_I(ip)->i_gid, icw->icw_gid)) in xfs_icwalk_match_id()
1033 ip->i_projid != icw->icw_prid) in xfs_icwalk_match_id()
1045 struct xfs_inode *ip, in xfs_icwalk_match_id_union() argument
1049 uid_eq(VFS_I(ip)->i_uid, icw->icw_uid)) in xfs_icwalk_match_id_union()
1053 gid_eq(VFS_I(ip)->i_gid, icw->icw_gid)) in xfs_icwalk_match_id_union()
1057 ip->i_projid == icw->icw_prid) in xfs_icwalk_match_id_union()
1070 struct xfs_inode *ip, in xfs_icwalk_match() argument
1079 match = xfs_icwalk_match_id_union(ip, icw); in xfs_icwalk_match()
1081 match = xfs_icwalk_match_id(ip, icw); in xfs_icwalk_match()
1087 XFS_ISIZE(ip) < icw->icw_min_file_size) in xfs_icwalk_match()
1112 struct xfs_inode *ip, in xfs_inode_free_eofblocks() argument
1120 if (!xfs_iflags_test(ip, XFS_IEOFBLOCKS)) in xfs_inode_free_eofblocks()
1127 if (!wait && mapping_tagged(VFS_I(ip)->i_mapping, PAGECACHE_TAG_DIRTY)) in xfs_inode_free_eofblocks()
1130 if (!xfs_icwalk_match(ip, icw)) in xfs_inode_free_eofblocks()
1137 if (!xfs_ilock_nowait(ip, XFS_IOLOCK_EXCL)) { in xfs_inode_free_eofblocks()
1144 if (xfs_can_free_eofblocks(ip, false)) in xfs_inode_free_eofblocks()
1145 return xfs_free_eofblocks(ip); in xfs_inode_free_eofblocks()
1148 trace_xfs_inode_free_eofblocks_invalid(ip); in xfs_inode_free_eofblocks()
1149 xfs_inode_clear_eofblocks_tag(ip); in xfs_inode_free_eofblocks()
1155 struct xfs_inode *ip, in xfs_blockgc_set_iflag() argument
1158 struct xfs_mount *mp = ip->i_mount; in xfs_blockgc_set_iflag()
1167 if (ip->i_flags & iflag) in xfs_blockgc_set_iflag()
1169 spin_lock(&ip->i_flags_lock); in xfs_blockgc_set_iflag()
1170 ip->i_flags |= iflag; in xfs_blockgc_set_iflag()
1171 spin_unlock(&ip->i_flags_lock); in xfs_blockgc_set_iflag()
1173 pag = xfs_perag_get(mp, XFS_INO_TO_AGNO(mp, ip->i_ino)); 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()
1185 xfs_inode_t *ip) in xfs_inode_set_eofblocks_tag() argument
1187 trace_xfs_inode_set_eofblocks_tag(ip); in xfs_inode_set_eofblocks_tag()
1188 return xfs_blockgc_set_iflag(ip, XFS_IEOFBLOCKS); in xfs_inode_set_eofblocks_tag()
1193 struct xfs_inode *ip, in xfs_blockgc_clear_iflag() argument
1196 struct xfs_mount *mp = ip->i_mount; in xfs_blockgc_clear_iflag()
1202 spin_lock(&ip->i_flags_lock); in xfs_blockgc_clear_iflag()
1203 ip->i_flags &= ~iflag; in xfs_blockgc_clear_iflag()
1204 clear_tag = (ip->i_flags & (XFS_IEOFBLOCKS | XFS_ICOWBLOCKS)) == 0; in xfs_blockgc_clear_iflag()
1205 spin_unlock(&ip->i_flags_lock); in xfs_blockgc_clear_iflag()
1210 pag = xfs_perag_get(mp, XFS_INO_TO_AGNO(mp, ip->i_ino)); 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()
1222 xfs_inode_t *ip) in xfs_inode_clear_eofblocks_tag() argument
1224 trace_xfs_inode_clear_eofblocks_tag(ip); in xfs_inode_clear_eofblocks_tag()
1225 return xfs_blockgc_clear_iflag(ip, XFS_IEOFBLOCKS); in xfs_inode_clear_eofblocks_tag()
1235 struct xfs_inode *ip) in xfs_prep_free_cowblocks() argument
1241 if (!xfs_inode_has_cow_data(ip)) { in xfs_prep_free_cowblocks()
1242 trace_xfs_inode_free_cowblocks_invalid(ip); in xfs_prep_free_cowblocks()
1243 xfs_inode_clear_cowblocks_tag(ip); in xfs_prep_free_cowblocks()
1251 if ((VFS_I(ip)->i_state & I_DIRTY_PAGES) || in xfs_prep_free_cowblocks()
1252 mapping_tagged(VFS_I(ip)->i_mapping, PAGECACHE_TAG_DIRTY) || in xfs_prep_free_cowblocks()
1253 mapping_tagged(VFS_I(ip)->i_mapping, PAGECACHE_TAG_WRITEBACK) || in xfs_prep_free_cowblocks()
1254 atomic_read(&VFS_I(ip)->i_dio_count)) in xfs_prep_free_cowblocks()
1274 struct xfs_inode *ip, in xfs_inode_free_cowblocks() argument
1283 if (!xfs_iflags_test(ip, XFS_ICOWBLOCKS)) in xfs_inode_free_cowblocks()
1286 if (!xfs_prep_free_cowblocks(ip)) in xfs_inode_free_cowblocks()
1289 if (!xfs_icwalk_match(ip, icw)) in xfs_inode_free_cowblocks()
1297 !xfs_ilock_nowait(ip, XFS_IOLOCK_EXCL)) { in xfs_inode_free_cowblocks()
1304 if (!xfs_ilock_nowait(ip, XFS_MMAPLOCK_EXCL)) { in xfs_inode_free_cowblocks()
1315 if (xfs_prep_free_cowblocks(ip)) in xfs_inode_free_cowblocks()
1316 ret = xfs_reflink_cancel_cow_range(ip, 0, NULLFILEOFF, false); in xfs_inode_free_cowblocks()
1322 xfs_inode_t *ip) in xfs_inode_set_cowblocks_tag() argument
1324 trace_xfs_inode_set_cowblocks_tag(ip); in xfs_inode_set_cowblocks_tag()
1325 return xfs_blockgc_set_iflag(ip, XFS_ICOWBLOCKS); in xfs_inode_set_cowblocks_tag()
1330 xfs_inode_t *ip) in xfs_inode_clear_cowblocks_tag() argument
1332 trace_xfs_inode_clear_cowblocks_tag(ip); in xfs_inode_clear_cowblocks_tag()
1333 return xfs_blockgc_clear_iflag(ip, XFS_ICOWBLOCKS); in xfs_inode_clear_cowblocks_tag()
1381 struct xfs_inode *ip) in xfs_blockgc_igrab() argument
1383 struct inode *inode = VFS_I(ip); in xfs_blockgc_igrab()
1388 spin_lock(&ip->i_flags_lock); in xfs_blockgc_igrab()
1389 if (!ip->i_ino) in xfs_blockgc_igrab()
1392 if (ip->i_flags & XFS_BLOCKGC_NOGRAB_IFLAGS) in xfs_blockgc_igrab()
1394 spin_unlock(&ip->i_flags_lock); in xfs_blockgc_igrab()
1397 if (xfs_is_shutdown(ip->i_mount)) in xfs_blockgc_igrab()
1408 spin_unlock(&ip->i_flags_lock); in xfs_blockgc_igrab()
1415 struct xfs_inode *ip, in xfs_blockgc_scan_inode() argument
1421 error = xfs_inode_free_eofblocks(ip, icw, &lockflags); in xfs_blockgc_scan_inode()
1425 error = xfs_inode_free_cowblocks(ip, icw, &lockflags); in xfs_blockgc_scan_inode()
1428 xfs_iunlock(ip, lockflags); in xfs_blockgc_scan_inode()
1429 xfs_irele(ip); in xfs_blockgc_scan_inode()
1558 struct xfs_inode *ip, in xfs_blockgc_free_quota() argument
1561 return xfs_blockgc_free_dquots(ip->i_mount, in xfs_blockgc_free_quota()
1562 xfs_inode_dquot(ip, XFS_DQTYPE_USER), in xfs_blockgc_free_quota()
1563 xfs_inode_dquot(ip, XFS_DQTYPE_GROUP), in xfs_blockgc_free_quota()
1564 xfs_inode_dquot(ip, XFS_DQTYPE_PROJ), iwalk_flags); in xfs_blockgc_free_quota()
1585 struct xfs_inode *ip, in xfs_icwalk_igrab() argument
1590 return xfs_blockgc_igrab(ip); in xfs_icwalk_igrab()
1592 return xfs_reclaim_igrab(ip, icw); in xfs_icwalk_igrab()
1605 struct xfs_inode *ip, in xfs_icwalk_process_inode() argument
1613 error = xfs_blockgc_scan_inode(ip, icw); in xfs_icwalk_process_inode()
1616 xfs_reclaim_inode(ip, pag); in xfs_icwalk_process_inode()
1668 struct xfs_inode *ip = batch[i]; in xfs_icwalk_ag() local
1670 if (done || !xfs_icwalk_igrab(goal, ip, icw)) in xfs_icwalk_ag()
1685 if (XFS_INO_TO_AGNO(mp, ip->i_ino) != pag->pag_agno) in xfs_icwalk_ag()
1687 first_index = XFS_INO_TO_AGINO(mp, ip->i_ino + 1); in xfs_icwalk_ag()
1688 if (first_index < XFS_INO_TO_AGINO(mp, ip->i_ino)) in xfs_icwalk_ag()
1763 struct xfs_inode *ip, in xfs_check_delalloc() argument
1766 struct xfs_ifork *ifp = XFS_IFORK_PTR(ip, whichfork); in xfs_check_delalloc()
1770 if (!ifp || !xfs_iext_lookup_extent(ip, ifp, 0, &icur, &got)) in xfs_check_delalloc()
1774 xfs_warn(ip->i_mount, in xfs_check_delalloc()
1776 ip->i_ino, in xfs_check_delalloc()
1783 #define xfs_check_delalloc(ip, whichfork) do { } while (0) argument
1789 struct xfs_inode *ip) in xfs_inodegc_set_reclaimable() argument
1791 struct xfs_mount *mp = ip->i_mount; in xfs_inodegc_set_reclaimable()
1794 if (!xfs_is_shutdown(mp) && ip->i_delayed_blks) { in xfs_inodegc_set_reclaimable()
1795 xfs_check_delalloc(ip, XFS_DATA_FORK); in xfs_inodegc_set_reclaimable()
1796 xfs_check_delalloc(ip, XFS_COW_FORK); in xfs_inodegc_set_reclaimable()
1800 pag = xfs_perag_get(mp, XFS_INO_TO_AGNO(mp, ip->i_ino)); in xfs_inodegc_set_reclaimable()
1802 spin_lock(&ip->i_flags_lock); in xfs_inodegc_set_reclaimable()
1804 trace_xfs_inode_set_reclaimable(ip); in xfs_inodegc_set_reclaimable()
1805 ip->i_flags &= ~(XFS_NEED_INACTIVE | XFS_INACTIVATING); in xfs_inodegc_set_reclaimable()
1806 ip->i_flags |= XFS_IRECLAIMABLE; 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()
1810 spin_unlock(&ip->i_flags_lock); in xfs_inodegc_set_reclaimable()
1822 struct xfs_inode *ip) in xfs_inodegc_inactivate() argument
1824 trace_xfs_inode_inactivating(ip); in xfs_inodegc_inactivate()
1825 xfs_inactive(ip); in xfs_inodegc_inactivate()
1826 xfs_inodegc_set_reclaimable(ip); in xfs_inodegc_inactivate()
1836 struct xfs_inode *ip, *n; in xfs_inodegc_worker() local
1843 ip = llist_entry(node, struct xfs_inode, i_gclist); in xfs_inodegc_worker()
1844 trace_xfs_inodegc_worker(ip->i_mount, READ_ONCE(gc->shrinker_hits)); in xfs_inodegc_worker()
1847 llist_for_each_entry_safe(ip, n, node, i_gclist) { in xfs_inodegc_worker()
1848 xfs_iflags_set(ip, XFS_INACTIVATING); in xfs_inodegc_worker()
1849 xfs_inodegc_inactivate(ip); in xfs_inodegc_worker()
1919 struct xfs_inode *ip) in xfs_inodegc_want_queue_rt_file() argument
1921 struct xfs_mount *mp = ip->i_mount; in xfs_inodegc_want_queue_rt_file()
1924 if (!XFS_IS_REALTIME_INODE(ip)) in xfs_inodegc_want_queue_rt_file()
1931 # define xfs_inodegc_want_queue_rt_file(ip) (false) argument
1943 struct xfs_inode *ip, in xfs_inodegc_want_queue_work() argument
1946 struct xfs_mount *mp = ip->i_mount; in xfs_inodegc_want_queue_work()
1956 if (xfs_inodegc_want_queue_rt_file(ip)) in xfs_inodegc_want_queue_work()
1959 if (xfs_inode_near_dquot_enforcement(ip, XFS_DQTYPE_USER)) in xfs_inodegc_want_queue_work()
1962 if (xfs_inode_near_dquot_enforcement(ip, XFS_DQTYPE_GROUP)) in xfs_inodegc_want_queue_work()
1965 if (xfs_inode_near_dquot_enforcement(ip, XFS_DQTYPE_PROJ)) in xfs_inodegc_want_queue_work()
1988 struct xfs_inode *ip, in xfs_inodegc_want_flush_work() argument
2011 struct xfs_inode *ip) in xfs_inodegc_queue() argument
2013 struct xfs_mount *mp = ip->i_mount; in xfs_inodegc_queue()
2018 trace_xfs_inode_set_need_inactive(ip); in xfs_inodegc_queue()
2019 spin_lock(&ip->i_flags_lock); in xfs_inodegc_queue()
2020 ip->i_flags |= XFS_NEED_INACTIVE; in xfs_inodegc_queue()
2021 spin_unlock(&ip->i_flags_lock); in xfs_inodegc_queue()
2024 llist_add(&ip->i_gclist, &gc->list); in xfs_inodegc_queue()
2033 if (xfs_inodegc_want_queue_work(ip, items)) { in xfs_inodegc_queue()
2038 if (xfs_inodegc_want_flush_work(ip, items, shrinker_hits)) { in xfs_inodegc_queue()
2096 struct xfs_inode *ip) in xfs_inode_mark_reclaimable() argument
2098 struct xfs_mount *mp = ip->i_mount; in xfs_inode_mark_reclaimable()
2106 ASSERT_ALWAYS(!xfs_iflags_test(ip, XFS_ALL_IRECLAIM_FLAGS)); in xfs_inode_mark_reclaimable()
2108 need_inactive = xfs_inode_needs_inactive(ip); in xfs_inode_mark_reclaimable()
2110 xfs_inodegc_queue(ip); in xfs_inode_mark_reclaimable()
2115 xfs_qm_dqdetach(ip); in xfs_inode_mark_reclaimable()
2116 xfs_inodegc_set_reclaimable(ip); in xfs_inode_mark_reclaimable()