• Home
  • Raw
  • Download

Lines Matching full:ip

37 	struct xfs_inode	*ip;  in xfs_inode_alloc()  local
43 ip = kmem_cache_alloc(xfs_inode_zone, GFP_KERNEL | __GFP_NOFAIL); in xfs_inode_alloc()
45 if (inode_init_always(mp->m_super, VFS_I(ip))) { in xfs_inode_alloc()
46 kmem_cache_free(xfs_inode_zone, ip); in xfs_inode_alloc()
51 VFS_I(ip)->i_mode = 0; in xfs_inode_alloc()
52 VFS_I(ip)->i_state = 0; in xfs_inode_alloc()
55 ASSERT(atomic_read(&ip->i_pincount) == 0); in xfs_inode_alloc()
56 ASSERT(ip->i_ino == 0); in xfs_inode_alloc()
59 ip->i_ino = ino; in xfs_inode_alloc()
60 ip->i_mount = mp; in xfs_inode_alloc()
61 memset(&ip->i_imap, 0, sizeof(struct xfs_imap)); in xfs_inode_alloc()
62 ip->i_afp = NULL; in xfs_inode_alloc()
63 ip->i_cowfp = NULL; in xfs_inode_alloc()
64 memset(&ip->i_df, 0, sizeof(ip->i_df)); in xfs_inode_alloc()
65 ip->i_flags = 0; in xfs_inode_alloc()
66 ip->i_delayed_blks = 0; in xfs_inode_alloc()
67 memset(&ip->i_d, 0, sizeof(ip->i_d)); in xfs_inode_alloc()
68 ip->i_sick = 0; in xfs_inode_alloc()
69 ip->i_checked = 0; in xfs_inode_alloc()
70 INIT_WORK(&ip->i_ioend_work, xfs_end_io); in xfs_inode_alloc()
71 INIT_LIST_HEAD(&ip->i_ioend_list); in xfs_inode_alloc()
72 spin_lock_init(&ip->i_ioend_lock); in xfs_inode_alloc()
74 return ip; in xfs_inode_alloc()
82 struct xfs_inode *ip = XFS_I(inode); in xfs_inode_free_callback() local
84 switch (VFS_I(ip)->i_mode & S_IFMT) { in xfs_inode_free_callback()
88 xfs_idestroy_fork(&ip->i_df); in xfs_inode_free_callback()
92 if (ip->i_afp) { in xfs_inode_free_callback()
93 xfs_idestroy_fork(ip->i_afp); in xfs_inode_free_callback()
94 kmem_cache_free(xfs_ifork_zone, ip->i_afp); in xfs_inode_free_callback()
96 if (ip->i_cowfp) { in xfs_inode_free_callback()
97 xfs_idestroy_fork(ip->i_cowfp); in xfs_inode_free_callback()
98 kmem_cache_free(xfs_ifork_zone, ip->i_cowfp); in xfs_inode_free_callback()
100 if (ip->i_itemp) { in xfs_inode_free_callback()
102 &ip->i_itemp->ili_item.li_flags)); in xfs_inode_free_callback()
103 xfs_inode_item_destroy(ip); in xfs_inode_free_callback()
104 ip->i_itemp = NULL; in xfs_inode_free_callback()
107 kmem_cache_free(xfs_inode_zone, ip); in xfs_inode_free_callback()
112 struct xfs_inode *ip) in __xfs_inode_free() argument
115 ASSERT(atomic_read(&ip->i_pincount) == 0); in __xfs_inode_free()
116 ASSERT(!ip->i_itemp || list_empty(&ip->i_itemp->ili_item.li_bio_list)); in __xfs_inode_free()
117 XFS_STATS_DEC(ip->i_mount, vn_active); in __xfs_inode_free()
119 call_rcu(&VFS_I(ip)->i_rcu, xfs_inode_free_callback); in __xfs_inode_free()
124 struct xfs_inode *ip) in xfs_inode_free() argument
126 ASSERT(!xfs_iflags_test(ip, XFS_IFLUSHING)); in xfs_inode_free()
131 * free state. The ip->i_flags_lock provides the barrier against lookup in xfs_inode_free()
134 spin_lock(&ip->i_flags_lock); in xfs_inode_free()
135 ip->i_flags = XFS_IRECLAIM; in xfs_inode_free()
136 ip->i_ino = 0; in xfs_inode_free()
137 spin_unlock(&ip->i_flags_lock); in xfs_inode_free()
139 __xfs_inode_free(ip); in xfs_inode_free()
207 struct xfs_inode *ip) in xfs_inode_set_reclaim_tag() argument
209 struct xfs_mount *mp = ip->i_mount; in xfs_inode_set_reclaim_tag()
212 pag = xfs_perag_get(mp, XFS_INO_TO_AGNO(mp, ip->i_ino)); in xfs_inode_set_reclaim_tag()
214 spin_lock(&ip->i_flags_lock); in xfs_inode_set_reclaim_tag()
216 radix_tree_tag_set(&pag->pag_ici_root, XFS_INO_TO_AGINO(mp, ip->i_ino), in xfs_inode_set_reclaim_tag()
219 __xfs_iflags_set(ip, XFS_IRECLAIMABLE); in xfs_inode_set_reclaim_tag()
221 spin_unlock(&ip->i_flags_lock); in xfs_inode_set_reclaim_tag()
239 struct xfs_inode *ip) in xfs_inew_wait() argument
241 wait_queue_head_t *wq = bit_waitqueue(&ip->i_flags, __XFS_INEW_BIT); in xfs_inew_wait()
242 DEFINE_WAIT_BIT(wait, &ip->i_flags, __XFS_INEW_BIT); in xfs_inew_wait()
246 if (!xfs_iflags_test(ip, XFS_INEW)) in xfs_inew_wait()
299 struct xfs_inode *ip, in xfs_iget_check_free_state() argument
304 if (VFS_I(ip)->i_mode != 0) { in xfs_iget_check_free_state()
305 xfs_warn(ip->i_mount, in xfs_iget_check_free_state()
307 ip->i_ino, VFS_I(ip)->i_mode); in xfs_iget_check_free_state()
311 if (ip->i_d.di_nblocks != 0) { in xfs_iget_check_free_state()
312 xfs_warn(ip->i_mount, in xfs_iget_check_free_state()
314 ip->i_ino); in xfs_iget_check_free_state()
321 if (VFS_I(ip)->i_mode == 0) in xfs_iget_check_free_state()
333 struct xfs_inode *ip, in xfs_iget_cache_hit() argument
338 struct inode *inode = VFS_I(ip); in xfs_iget_cache_hit()
339 struct xfs_mount *mp = ip->i_mount; in xfs_iget_cache_hit()
349 spin_lock(&ip->i_flags_lock); in xfs_iget_cache_hit()
350 if (ip->i_ino != ino) { in xfs_iget_cache_hit()
351 trace_xfs_iget_skip(ip); in xfs_iget_cache_hit()
368 if (ip->i_flags & (XFS_INEW|XFS_IRECLAIM)) { in xfs_iget_cache_hit()
369 trace_xfs_iget_skip(ip); in xfs_iget_cache_hit()
379 error = xfs_iget_check_free_state(ip, flags); in xfs_iget_cache_hit()
387 if (ip->i_flags & XFS_IRECLAIMABLE) { in xfs_iget_cache_hit()
388 trace_xfs_iget_reclaim(ip); in xfs_iget_cache_hit()
401 ip->i_flags |= XFS_IRECLAIM; in xfs_iget_cache_hit()
403 spin_unlock(&ip->i_flags_lock); in xfs_iget_cache_hit()
415 spin_lock(&ip->i_flags_lock); in xfs_iget_cache_hit()
416 wake = !!__xfs_iflags_test(ip, XFS_INEW); in xfs_iget_cache_hit()
417 ip->i_flags &= ~(XFS_INEW | XFS_IRECLAIM); in xfs_iget_cache_hit()
419 wake_up_bit(&ip->i_flags, __XFS_INEW_BIT); in xfs_iget_cache_hit()
420 ASSERT(ip->i_flags & XFS_IRECLAIMABLE); in xfs_iget_cache_hit()
421 trace_xfs_iget_reclaim_fail(ip); in xfs_iget_cache_hit()
426 spin_lock(&ip->i_flags_lock); in xfs_iget_cache_hit()
433 ip->i_flags &= ~XFS_IRECLAIM_RESET_FLAGS; in xfs_iget_cache_hit()
434 ip->i_flags |= XFS_INEW; in xfs_iget_cache_hit()
435 xfs_inode_clear_reclaim_tag(pag, ip->i_ino); in xfs_iget_cache_hit()
437 ip->i_sick = 0; in xfs_iget_cache_hit()
438 ip->i_checked = 0; in xfs_iget_cache_hit()
440 spin_unlock(&ip->i_flags_lock); in xfs_iget_cache_hit()
445 trace_xfs_iget_skip(ip); in xfs_iget_cache_hit()
451 spin_unlock(&ip->i_flags_lock); in xfs_iget_cache_hit()
453 trace_xfs_iget_hit(ip); in xfs_iget_cache_hit()
457 xfs_ilock(ip, lock_flags); in xfs_iget_cache_hit()
460 xfs_iflags_clear(ip, XFS_ISTALE); in xfs_iget_cache_hit()
466 spin_unlock(&ip->i_flags_lock); in xfs_iget_cache_hit()
482 struct xfs_inode *ip; in xfs_iget_cache_miss() local
487 ip = xfs_inode_alloc(mp, ino); in xfs_iget_cache_miss()
488 if (!ip) in xfs_iget_cache_miss()
491 error = xfs_imap(mp, tp, ip->i_ino, &ip->i_imap, flags); in xfs_iget_cache_miss()
507 VFS_I(ip)->i_generation = prandom_u32(); in xfs_iget_cache_miss()
512 error = xfs_imap_to_bp(mp, tp, &ip->i_imap, &dip, &bp, 0); in xfs_iget_cache_miss()
516 error = xfs_inode_from_disk(ip, dip); in xfs_iget_cache_miss()
525 trace_xfs_iget_miss(ip); in xfs_iget_cache_miss()
531 error = xfs_iget_check_free_state(ip, flags); in xfs_iget_cache_miss()
551 if (!xfs_ilock_nowait(ip, lock_flags)) in xfs_iget_cache_miss()
560 * The ip->i_flags_lock that protects the XFS_INEW flag forms the in xfs_iget_cache_miss()
566 d_mark_dontcache(VFS_I(ip)); in xfs_iget_cache_miss()
567 ip->i_udquot = NULL; in xfs_iget_cache_miss()
568 ip->i_gdquot = NULL; in xfs_iget_cache_miss()
569 ip->i_pdquot = NULL; in xfs_iget_cache_miss()
570 xfs_iflags_set(ip, iflags); in xfs_iget_cache_miss()
574 error = radix_tree_insert(&pag->pag_ici_root, agino, ip); in xfs_iget_cache_miss()
584 *ipp = ip; in xfs_iget_cache_miss()
591 xfs_iunlock(ip, lock_flags); in xfs_iget_cache_miss()
593 __destroy_inode(VFS_I(ip)); in xfs_iget_cache_miss()
594 xfs_inode_free(ip); in xfs_iget_cache_miss()
619 struct xfs_inode *ip; in xfs_iget() local
639 ip = radix_tree_lookup(&pag->pag_ici_root, agino); in xfs_iget()
641 if (ip) { in xfs_iget()
642 error = xfs_iget_cache_hit(pag, ip, ino, flags, lock_flags); in xfs_iget()
653 error = xfs_iget_cache_miss(mp, pag, tp, ino, &ip, in xfs_iget()
660 *ipp = ip; in xfs_iget()
666 if (xfs_iflags_test(ip, XFS_INEW) && VFS_I(ip)->i_mode != 0) in xfs_iget()
667 xfs_setup_existing_inode(ip); in xfs_iget()
705 struct xfs_inode *ip; in xfs_icache_inode_is_allocated() local
708 error = xfs_iget(mp, tp, ino, XFS_IGET_INCORE, 0, &ip); in xfs_icache_inode_is_allocated()
712 *inuse = !!(VFS_I(ip)->i_mode); in xfs_icache_inode_is_allocated()
713 xfs_irele(ip); in xfs_icache_inode_is_allocated()
726 * Decide if the given @ip is eligible to be a part of the inode walk, and
732 struct xfs_inode *ip, in xfs_inode_walk_ag_grab() argument
735 struct inode *inode = VFS_I(ip); in xfs_inode_walk_ag_grab()
741 spin_lock(&ip->i_flags_lock); in xfs_inode_walk_ag_grab()
742 if (!ip->i_ino) in xfs_inode_walk_ag_grab()
746 if ((!newinos && __xfs_iflags_test(ip, XFS_INEW)) || in xfs_inode_walk_ag_grab()
747 __xfs_iflags_test(ip, XFS_IRECLAIMABLE | XFS_IRECLAIM)) in xfs_inode_walk_ag_grab()
749 spin_unlock(&ip->i_flags_lock); in xfs_inode_walk_ag_grab()
752 if (XFS_FORCED_SHUTDOWN(ip->i_mount)) in xfs_inode_walk_ag_grab()
763 spin_unlock(&ip->i_flags_lock); in xfs_inode_walk_ag_grab()
775 int (*execute)(struct xfs_inode *ip, void *args), in xfs_inode_walk_ag() argument
818 struct xfs_inode *ip = batch[i]; in xfs_inode_walk_ag() local
820 if (done || !xfs_inode_walk_ag_grab(ip, iter_flags)) in xfs_inode_walk_ag()
835 if (XFS_INO_TO_AGNO(mp, ip->i_ino) != pag->pag_agno) in xfs_inode_walk_ag()
837 first_index = XFS_INO_TO_AGINO(mp, ip->i_ino + 1); in xfs_inode_walk_ag()
838 if (first_index < XFS_INO_TO_AGINO(mp, ip->i_ino)) in xfs_inode_walk_ag()
896 int (*execute)(struct xfs_inode *ip, void *args), in xfs_inode_walk() argument
1001 struct xfs_inode *ip) in xfs_reclaim_inode_grab() argument
1005 spin_lock(&ip->i_flags_lock); in xfs_reclaim_inode_grab()
1006 if (!__xfs_iflags_test(ip, XFS_IRECLAIMABLE) || in xfs_reclaim_inode_grab()
1007 __xfs_iflags_test(ip, XFS_IRECLAIM)) { in xfs_reclaim_inode_grab()
1009 spin_unlock(&ip->i_flags_lock); in xfs_reclaim_inode_grab()
1012 __xfs_iflags_set(ip, XFS_IRECLAIM); in xfs_reclaim_inode_grab()
1013 spin_unlock(&ip->i_flags_lock); in xfs_reclaim_inode_grab()
1031 struct xfs_inode *ip, in xfs_reclaim_inode() argument
1034 xfs_ino_t ino = ip->i_ino; /* for radix_tree_delete */ in xfs_reclaim_inode()
1036 if (!xfs_ilock_nowait(ip, XFS_ILOCK_EXCL)) in xfs_reclaim_inode()
1038 if (xfs_iflags_test_and_set(ip, XFS_IFLUSHING)) in xfs_reclaim_inode()
1041 if (XFS_FORCED_SHUTDOWN(ip->i_mount)) { in xfs_reclaim_inode()
1042 xfs_iunpin_wait(ip); in xfs_reclaim_inode()
1043 xfs_iflush_abort(ip); in xfs_reclaim_inode()
1046 if (xfs_ipincount(ip)) in xfs_reclaim_inode()
1048 if (!xfs_inode_clean(ip)) in xfs_reclaim_inode()
1051 xfs_iflags_clear(ip, XFS_IFLUSHING); in xfs_reclaim_inode()
1064 spin_lock(&ip->i_flags_lock); in xfs_reclaim_inode()
1065 ip->i_flags = XFS_IRECLAIM; in xfs_reclaim_inode()
1066 ip->i_ino = 0; in xfs_reclaim_inode()
1067 spin_unlock(&ip->i_flags_lock); in xfs_reclaim_inode()
1069 xfs_iunlock(ip, XFS_ILOCK_EXCL); in xfs_reclaim_inode()
1071 XFS_STATS_INC(ip->i_mount, xs_ig_reclaims); in xfs_reclaim_inode()
1081 XFS_INO_TO_AGINO(ip->i_mount, ino))) in xfs_reclaim_inode()
1094 xfs_ilock(ip, XFS_ILOCK_EXCL); in xfs_reclaim_inode()
1095 xfs_qm_dqdetach(ip); in xfs_reclaim_inode()
1096 xfs_iunlock(ip, XFS_ILOCK_EXCL); in xfs_reclaim_inode()
1097 ASSERT(xfs_inode_clean(ip)); in xfs_reclaim_inode()
1099 __xfs_inode_free(ip); in xfs_reclaim_inode()
1103 xfs_iflags_clear(ip, XFS_IFLUSHING); in xfs_reclaim_inode()
1105 xfs_iunlock(ip, XFS_ILOCK_EXCL); in xfs_reclaim_inode()
1107 xfs_iflags_clear(ip, XFS_IRECLAIM); in xfs_reclaim_inode()
1157 struct xfs_inode *ip = batch[i]; in xfs_reclaim_inodes_ag() local
1159 if (done || !xfs_reclaim_inode_grab(ip)) in xfs_reclaim_inodes_ag()
1176 if (XFS_INO_TO_AGNO(mp, ip->i_ino) != in xfs_reclaim_inodes_ag()
1179 first_index = XFS_INO_TO_AGINO(mp, ip->i_ino + 1); in xfs_reclaim_inodes_ag()
1180 if (first_index < XFS_INO_TO_AGINO(mp, ip->i_ino)) in xfs_reclaim_inodes_ag()
1257 struct xfs_inode *ip, in xfs_inode_match_id() argument
1261 !uid_eq(VFS_I(ip)->i_uid, eofb->eof_uid)) in xfs_inode_match_id()
1265 !gid_eq(VFS_I(ip)->i_gid, eofb->eof_gid)) in xfs_inode_match_id()
1269 ip->i_d.di_projid != eofb->eof_prid) in xfs_inode_match_id()
1281 struct xfs_inode *ip, in xfs_inode_match_id_union() argument
1285 uid_eq(VFS_I(ip)->i_uid, eofb->eof_uid)) in xfs_inode_match_id_union()
1289 gid_eq(VFS_I(ip)->i_gid, eofb->eof_gid)) in xfs_inode_match_id_union()
1293 ip->i_d.di_projid == eofb->eof_prid) in xfs_inode_match_id_union()
1300 * Is this inode @ip eligible for eof/cow block reclamation, given some
1306 struct xfs_inode *ip, in xfs_inode_matches_eofb() argument
1315 match = xfs_inode_match_id_union(ip, eofb); in xfs_inode_matches_eofb()
1317 match = xfs_inode_match_id(ip, eofb); in xfs_inode_matches_eofb()
1323 XFS_ISIZE(ip) < eofb->eof_min_file_size) in xfs_inode_matches_eofb()
1349 struct xfs_inode *ip, in xfs_inode_free_eofblocks() argument
1358 if (!xfs_can_free_eofblocks(ip, false)) { in xfs_inode_free_eofblocks()
1360 trace_xfs_inode_free_eofblocks_invalid(ip); in xfs_inode_free_eofblocks()
1361 xfs_inode_clear_eofblocks_tag(ip); in xfs_inode_free_eofblocks()
1369 if (!wait && mapping_tagged(VFS_I(ip)->i_mapping, PAGECACHE_TAG_DIRTY)) in xfs_inode_free_eofblocks()
1372 if (!xfs_inode_matches_eofb(ip, eofb)) in xfs_inode_free_eofblocks()
1379 if (!xfs_ilock_nowait(ip, XFS_IOLOCK_EXCL)) { in xfs_inode_free_eofblocks()
1385 ret = xfs_free_eofblocks(ip); in xfs_inode_free_eofblocks()
1386 xfs_iunlock(ip, XFS_IOLOCK_EXCL); in xfs_inode_free_eofblocks()
1408 struct xfs_inode *ip, in __xfs_inode_free_quota_eofblocks() argument
1422 if (XFS_IS_UQUOTA_ENFORCED(ip->i_mount)) { in __xfs_inode_free_quota_eofblocks()
1423 dq = xfs_inode_dquot(ip, XFS_DQTYPE_USER); in __xfs_inode_free_quota_eofblocks()
1425 eofb.eof_uid = VFS_I(ip)->i_uid; in __xfs_inode_free_quota_eofblocks()
1431 if (XFS_IS_GQUOTA_ENFORCED(ip->i_mount)) { in __xfs_inode_free_quota_eofblocks()
1432 dq = xfs_inode_dquot(ip, XFS_DQTYPE_GROUP); in __xfs_inode_free_quota_eofblocks()
1434 eofb.eof_gid = VFS_I(ip)->i_gid; in __xfs_inode_free_quota_eofblocks()
1441 execute(ip->i_mount, &eofb); in __xfs_inode_free_quota_eofblocks()
1448 struct xfs_inode *ip) in xfs_inode_free_quota_eofblocks() argument
1450 return __xfs_inode_free_quota_eofblocks(ip, xfs_icache_free_eofblocks); in xfs_inode_free_quota_eofblocks()
1470 xfs_inode_t *ip, in __xfs_inode_set_blocks_tag() argument
1476 struct xfs_mount *mp = ip->i_mount; in __xfs_inode_set_blocks_tag()
1484 if (ip->i_flags & xfs_iflag_for_tag(tag)) in __xfs_inode_set_blocks_tag()
1486 spin_lock(&ip->i_flags_lock); in __xfs_inode_set_blocks_tag()
1487 ip->i_flags |= xfs_iflag_for_tag(tag); in __xfs_inode_set_blocks_tag()
1488 spin_unlock(&ip->i_flags_lock); in __xfs_inode_set_blocks_tag()
1490 pag = xfs_perag_get(mp, XFS_INO_TO_AGNO(mp, ip->i_ino)); in __xfs_inode_set_blocks_tag()
1495 XFS_INO_TO_AGINO(ip->i_mount, ip->i_ino), tag); in __xfs_inode_set_blocks_tag()
1498 spin_lock(&ip->i_mount->m_perag_lock); in __xfs_inode_set_blocks_tag()
1499 radix_tree_tag_set(&ip->i_mount->m_perag_tree, in __xfs_inode_set_blocks_tag()
1500 XFS_INO_TO_AGNO(ip->i_mount, ip->i_ino), in __xfs_inode_set_blocks_tag()
1502 spin_unlock(&ip->i_mount->m_perag_lock); in __xfs_inode_set_blocks_tag()
1505 execute(ip->i_mount); in __xfs_inode_set_blocks_tag()
1507 set_tp(ip->i_mount, pag->pag_agno, -1, _RET_IP_); in __xfs_inode_set_blocks_tag()
1516 xfs_inode_t *ip) in xfs_inode_set_eofblocks_tag() argument
1518 trace_xfs_inode_set_eofblocks_tag(ip); in xfs_inode_set_eofblocks_tag()
1519 return __xfs_inode_set_blocks_tag(ip, xfs_queue_eofblocks, in xfs_inode_set_eofblocks_tag()
1526 xfs_inode_t *ip, in __xfs_inode_clear_blocks_tag() argument
1531 struct xfs_mount *mp = ip->i_mount; in __xfs_inode_clear_blocks_tag()
1534 spin_lock(&ip->i_flags_lock); in __xfs_inode_clear_blocks_tag()
1535 ip->i_flags &= ~xfs_iflag_for_tag(tag); in __xfs_inode_clear_blocks_tag()
1536 spin_unlock(&ip->i_flags_lock); in __xfs_inode_clear_blocks_tag()
1538 pag = xfs_perag_get(mp, XFS_INO_TO_AGNO(mp, ip->i_ino)); in __xfs_inode_clear_blocks_tag()
1542 XFS_INO_TO_AGINO(ip->i_mount, ip->i_ino), tag); in __xfs_inode_clear_blocks_tag()
1545 spin_lock(&ip->i_mount->m_perag_lock); in __xfs_inode_clear_blocks_tag()
1546 radix_tree_tag_clear(&ip->i_mount->m_perag_tree, in __xfs_inode_clear_blocks_tag()
1547 XFS_INO_TO_AGNO(ip->i_mount, ip->i_ino), in __xfs_inode_clear_blocks_tag()
1549 spin_unlock(&ip->i_mount->m_perag_lock); in __xfs_inode_clear_blocks_tag()
1550 clear_tp(ip->i_mount, pag->pag_agno, -1, _RET_IP_); in __xfs_inode_clear_blocks_tag()
1559 xfs_inode_t *ip) in xfs_inode_clear_eofblocks_tag() argument
1561 trace_xfs_inode_clear_eofblocks_tag(ip); in xfs_inode_clear_eofblocks_tag()
1562 return __xfs_inode_clear_blocks_tag(ip, in xfs_inode_clear_eofblocks_tag()
1573 struct xfs_inode *ip) in xfs_prep_free_cowblocks() argument
1579 if (!xfs_inode_has_cow_data(ip)) { in xfs_prep_free_cowblocks()
1580 trace_xfs_inode_free_cowblocks_invalid(ip); in xfs_prep_free_cowblocks()
1581 xfs_inode_clear_cowblocks_tag(ip); in xfs_prep_free_cowblocks()
1589 if ((VFS_I(ip)->i_state & I_DIRTY_PAGES) || in xfs_prep_free_cowblocks()
1590 mapping_tagged(VFS_I(ip)->i_mapping, PAGECACHE_TAG_DIRTY) || in xfs_prep_free_cowblocks()
1591 mapping_tagged(VFS_I(ip)->i_mapping, PAGECACHE_TAG_WRITEBACK) || in xfs_prep_free_cowblocks()
1592 atomic_read(&VFS_I(ip)->i_dio_count)) in xfs_prep_free_cowblocks()
1612 struct xfs_inode *ip, in xfs_inode_free_cowblocks() argument
1618 if (!xfs_prep_free_cowblocks(ip)) in xfs_inode_free_cowblocks()
1621 if (!xfs_inode_matches_eofb(ip, eofb)) in xfs_inode_free_cowblocks()
1625 xfs_ilock(ip, XFS_IOLOCK_EXCL); in xfs_inode_free_cowblocks()
1626 xfs_ilock(ip, XFS_MMAPLOCK_EXCL); in xfs_inode_free_cowblocks()
1632 if (xfs_prep_free_cowblocks(ip)) in xfs_inode_free_cowblocks()
1633 ret = xfs_reflink_cancel_cow_range(ip, 0, NULLFILEOFF, false); in xfs_inode_free_cowblocks()
1635 xfs_iunlock(ip, XFS_MMAPLOCK_EXCL); in xfs_inode_free_cowblocks()
1636 xfs_iunlock(ip, XFS_IOLOCK_EXCL); in xfs_inode_free_cowblocks()
1652 struct xfs_inode *ip) in xfs_inode_free_quota_cowblocks() argument
1654 return __xfs_inode_free_quota_eofblocks(ip, xfs_icache_free_cowblocks); in xfs_inode_free_quota_cowblocks()
1659 xfs_inode_t *ip) in xfs_inode_set_cowblocks_tag() argument
1661 trace_xfs_inode_set_cowblocks_tag(ip); in xfs_inode_set_cowblocks_tag()
1662 return __xfs_inode_set_blocks_tag(ip, xfs_queue_cowblocks, in xfs_inode_set_cowblocks_tag()
1669 xfs_inode_t *ip) in xfs_inode_clear_cowblocks_tag() argument
1671 trace_xfs_inode_clear_cowblocks_tag(ip); in xfs_inode_clear_cowblocks_tag()
1672 return __xfs_inode_clear_blocks_tag(ip, in xfs_inode_clear_cowblocks_tag()