Lines Matching refs:ip

69 	struct xfs_inode	*ip)  in xfs_get_extsz_hint()  argument
71 if ((ip->i_d.di_flags & XFS_DIFLAG_EXTSIZE) && ip->i_d.di_extsize) in xfs_get_extsz_hint()
72 return ip->i_d.di_extsize; in xfs_get_extsz_hint()
73 if (XFS_IS_REALTIME_INODE(ip)) in xfs_get_extsz_hint()
74 return ip->i_mount->m_sb.sb_rextsize; in xfs_get_extsz_hint()
95 struct xfs_inode *ip) in xfs_ilock_data_map_shared() argument
99 if (ip->i_d.di_format == XFS_DINODE_FMT_BTREE && in xfs_ilock_data_map_shared()
100 (ip->i_df.if_flags & XFS_IFEXTENTS) == 0) in xfs_ilock_data_map_shared()
102 xfs_ilock(ip, lock_mode); in xfs_ilock_data_map_shared()
108 struct xfs_inode *ip) in xfs_ilock_attr_map_shared() argument
112 if (ip->i_d.di_aformat == XFS_DINODE_FMT_BTREE && in xfs_ilock_attr_map_shared()
113 (ip->i_afp->if_flags & XFS_IFEXTENTS) == 0) in xfs_ilock_attr_map_shared()
115 xfs_ilock(ip, lock_mode); in xfs_ilock_attr_map_shared()
151 xfs_inode_t *ip, in xfs_ilock() argument
154 trace_xfs_ilock(ip, lock_flags, _RET_IP_); in xfs_ilock()
170 mrupdate_nested(&ip->i_iolock, XFS_IOLOCK_DEP(lock_flags)); in xfs_ilock()
172 mraccess_nested(&ip->i_iolock, XFS_IOLOCK_DEP(lock_flags)); in xfs_ilock()
175 mrupdate_nested(&ip->i_mmaplock, XFS_MMAPLOCK_DEP(lock_flags)); in xfs_ilock()
177 mraccess_nested(&ip->i_mmaplock, XFS_MMAPLOCK_DEP(lock_flags)); in xfs_ilock()
180 mrupdate_nested(&ip->i_lock, XFS_ILOCK_DEP(lock_flags)); in xfs_ilock()
182 mraccess_nested(&ip->i_lock, XFS_ILOCK_DEP(lock_flags)); in xfs_ilock()
199 xfs_inode_t *ip, in xfs_ilock_nowait() argument
202 trace_xfs_ilock_nowait(ip, lock_flags, _RET_IP_); in xfs_ilock_nowait()
218 if (!mrtryupdate(&ip->i_iolock)) in xfs_ilock_nowait()
221 if (!mrtryaccess(&ip->i_iolock)) in xfs_ilock_nowait()
226 if (!mrtryupdate(&ip->i_mmaplock)) in xfs_ilock_nowait()
229 if (!mrtryaccess(&ip->i_mmaplock)) in xfs_ilock_nowait()
234 if (!mrtryupdate(&ip->i_lock)) in xfs_ilock_nowait()
237 if (!mrtryaccess(&ip->i_lock)) in xfs_ilock_nowait()
244 mrunlock_excl(&ip->i_mmaplock); in xfs_ilock_nowait()
246 mrunlock_shared(&ip->i_mmaplock); in xfs_ilock_nowait()
249 mrunlock_excl(&ip->i_iolock); in xfs_ilock_nowait()
251 mrunlock_shared(&ip->i_iolock); in xfs_ilock_nowait()
270 xfs_inode_t *ip, in xfs_iunlock() argument
288 mrunlock_excl(&ip->i_iolock); in xfs_iunlock()
290 mrunlock_shared(&ip->i_iolock); in xfs_iunlock()
293 mrunlock_excl(&ip->i_mmaplock); in xfs_iunlock()
295 mrunlock_shared(&ip->i_mmaplock); in xfs_iunlock()
298 mrunlock_excl(&ip->i_lock); in xfs_iunlock()
300 mrunlock_shared(&ip->i_lock); in xfs_iunlock()
302 trace_xfs_iunlock(ip, lock_flags, _RET_IP_); in xfs_iunlock()
311 xfs_inode_t *ip, in xfs_ilock_demote() argument
319 mrdemote(&ip->i_lock); in xfs_ilock_demote()
321 mrdemote(&ip->i_mmaplock); in xfs_ilock_demote()
323 mrdemote(&ip->i_iolock); in xfs_ilock_demote()
325 trace_xfs_ilock_demote(ip, lock_flags, _RET_IP_); in xfs_ilock_demote()
331 xfs_inode_t *ip, in xfs_isilocked() argument
336 return !!ip->i_lock.mr_writer; in xfs_isilocked()
337 return rwsem_is_locked(&ip->i_lock.mr_lock); in xfs_isilocked()
342 return !!ip->i_mmaplock.mr_writer; in xfs_isilocked()
343 return rwsem_is_locked(&ip->i_mmaplock.mr_lock); in xfs_isilocked()
348 return !!ip->i_iolock.mr_writer; in xfs_isilocked()
349 return rwsem_is_locked(&ip->i_iolock.mr_lock); in xfs_isilocked()
545 struct xfs_inode *ip) in __xfs_iflock() argument
547 wait_queue_head_t *wq = bit_waitqueue(&ip->i_flags, __XFS_IFLOCK_BIT); in __xfs_iflock()
548 DEFINE_WAIT_BIT(wait, &ip->i_flags, __XFS_IFLOCK_BIT); in __xfs_iflock()
552 if (xfs_isiflocked(ip)) in __xfs_iflock()
554 } while (!xfs_iflock_nowait(ip)); in __xfs_iflock()
601 xfs_inode_t *ip) in xfs_ip2xflags() argument
603 xfs_icdinode_t *dic = &ip->i_d; in xfs_ip2xflags()
606 (XFS_IFORK_Q(ip) ? XFS_XFLAG_HASATTR : 0); in xfs_ip2xflags()
705 xfs_inode_t *ip; in xfs_ialloc() local
730 XFS_ILOCK_EXCL, &ip); in xfs_ialloc()
733 ASSERT(ip != NULL); in xfs_ialloc()
740 if (ip->i_d.di_version == 1) in xfs_ialloc()
741 ip->i_d.di_version = 2; in xfs_ialloc()
743 ip->i_d.di_mode = mode; in xfs_ialloc()
744 ip->i_d.di_onlink = 0; in xfs_ialloc()
745 ip->i_d.di_nlink = nlink; in xfs_ialloc()
746 ASSERT(ip->i_d.di_nlink == nlink); in xfs_ialloc()
747 ip->i_d.di_uid = xfs_kuid_to_uid(current_fsuid()); in xfs_ialloc()
748 ip->i_d.di_gid = xfs_kgid_to_gid(current_fsgid()); in xfs_ialloc()
749 xfs_set_projid(ip, prid); in xfs_ialloc()
750 memset(&(ip->i_d.di_pad[0]), 0, sizeof(ip->i_d.di_pad)); in xfs_ialloc()
753 ip->i_d.di_gid = pip->i_d.di_gid; in xfs_ialloc()
755 ip->i_d.di_mode |= S_ISGID; in xfs_ialloc()
765 (ip->i_d.di_mode & S_ISGID) && in xfs_ialloc()
766 (!in_group_p(xfs_gid_to_kgid(ip->i_d.di_gid)))) { in xfs_ialloc()
767 ip->i_d.di_mode &= ~S_ISGID; in xfs_ialloc()
770 ip->i_d.di_size = 0; in xfs_ialloc()
771 ip->i_d.di_nextents = 0; in xfs_ialloc()
772 ASSERT(ip->i_d.di_nblocks == 0); in xfs_ialloc()
775 ip->i_d.di_mtime.t_sec = (__int32_t)tv.tv_sec; in xfs_ialloc()
776 ip->i_d.di_mtime.t_nsec = (__int32_t)tv.tv_nsec; in xfs_ialloc()
777 ip->i_d.di_atime = ip->i_d.di_mtime; in xfs_ialloc()
778 ip->i_d.di_ctime = ip->i_d.di_mtime; in xfs_ialloc()
783 ip->i_d.di_extsize = 0; in xfs_ialloc()
784 ip->i_d.di_dmevmask = 0; in xfs_ialloc()
785 ip->i_d.di_dmstate = 0; in xfs_ialloc()
786 ip->i_d.di_flags = 0; in xfs_ialloc()
788 if (ip->i_d.di_version == 3) { in xfs_ialloc()
789 ASSERT(ip->i_d.di_ino == ino); in xfs_ialloc()
790 ASSERT(uuid_equal(&ip->i_d.di_uuid, &mp->m_sb.sb_uuid)); in xfs_ialloc()
791 ip->i_d.di_crc = 0; in xfs_ialloc()
792 ip->i_d.di_changecount = 1; in xfs_ialloc()
793 ip->i_d.di_lsn = 0; in xfs_ialloc()
794 ip->i_d.di_flags2 = 0; in xfs_ialloc()
795 memset(&(ip->i_d.di_pad2[0]), 0, sizeof(ip->i_d.di_pad2)); in xfs_ialloc()
796 ip->i_d.di_crtime = ip->i_d.di_mtime; in xfs_ialloc()
806 ip->i_d.di_format = XFS_DINODE_FMT_DEV; in xfs_ialloc()
807 ip->i_df.if_u2.if_rdev = rdev; in xfs_ialloc()
808 ip->i_df.if_flags = 0; in xfs_ialloc()
821 ip->i_d.di_extsize = pip->i_d.di_extsize; in xfs_ialloc()
830 ip->i_d.di_extsize = pip->i_d.di_extsize; in xfs_ialloc()
850 ip->i_d.di_flags |= di_flags; in xfs_ialloc()
854 ip->i_d.di_format = XFS_DINODE_FMT_EXTENTS; in xfs_ialloc()
855 ip->i_df.if_flags = XFS_IFEXTENTS; in xfs_ialloc()
856 ip->i_df.if_bytes = ip->i_df.if_real_bytes = 0; in xfs_ialloc()
857 ip->i_df.if_u1.if_extents = NULL; in xfs_ialloc()
865 ip->i_d.di_aformat = XFS_DINODE_FMT_EXTENTS; in xfs_ialloc()
866 ip->i_d.di_anextents = 0; in xfs_ialloc()
871 xfs_trans_ijoin(tp, ip, XFS_ILOCK_EXCL); in xfs_ialloc()
872 xfs_trans_log_inode(tp, ip, flags); in xfs_ialloc()
875 xfs_setup_inode(ip); in xfs_ialloc()
877 *ipp = ip; in xfs_ialloc()
909 xfs_inode_t *ip; in xfs_dir_ialloc() local
934 &ialloc_context, &ip); in xfs_dir_ialloc()
945 if (!ialloc_context && !ip) { in xfs_dir_ialloc()
1040 okalloc, &ialloc_context, &ip); in xfs_dir_ialloc()
1051 ASSERT(!ialloc_context && ip); in xfs_dir_ialloc()
1058 *ipp = ip; in xfs_dir_ialloc()
1072 xfs_inode_t *ip) in xfs_droplink() argument
1076 xfs_trans_ichgtime(tp, ip, XFS_ICHGTIME_CHG); in xfs_droplink()
1078 ASSERT (ip->i_d.di_nlink > 0); in xfs_droplink()
1079 ip->i_d.di_nlink--; in xfs_droplink()
1080 drop_nlink(VFS_I(ip)); in xfs_droplink()
1081 xfs_trans_log_inode(tp, ip, XFS_ILOG_CORE); in xfs_droplink()
1084 if (ip->i_d.di_nlink == 0) { in xfs_droplink()
1091 error = xfs_iunlink(tp, ip); in xfs_droplink()
1102 xfs_inode_t *ip) in xfs_bumplink() argument
1104 xfs_trans_ichgtime(tp, ip, XFS_ICHGTIME_CHG); in xfs_bumplink()
1106 ASSERT(ip->i_d.di_version > 1); in xfs_bumplink()
1107 ASSERT(ip->i_d.di_nlink > 0 || (VFS_I(ip)->i_state & I_LINKABLE)); in xfs_bumplink()
1108 ip->i_d.di_nlink++; in xfs_bumplink()
1109 inc_nlink(VFS_I(ip)); in xfs_bumplink()
1110 xfs_trans_log_inode(tp, ip, XFS_ILOG_CORE); in xfs_bumplink()
1124 struct xfs_inode *ip = NULL; in xfs_create() local
1216 prid, resblks > 0, &ip, &committed); in xfs_create()
1233 error = xfs_dir_createname(tp, dp, name, ip->i_ino, in xfs_create()
1244 error = xfs_dir_init(tp, ip, dp); in xfs_create()
1266 xfs_qm_vop_create_dqattach(tp, ip, udqp, gdqp, pdqp); in xfs_create()
1280 *ipp = ip; in xfs_create()
1295 if (ip) { in xfs_create()
1296 xfs_finish_inode_setup(ip); in xfs_create()
1297 IRELE(ip); in xfs_create()
1317 struct xfs_inode *ip = NULL; in xfs_create_tmpfile() local
1364 prid, resblks > 0, &ip, NULL); in xfs_create_tmpfile()
1379 xfs_qm_vop_create_dqattach(tp, ip, udqp, gdqp, pdqp); in xfs_create_tmpfile()
1381 ip->i_d.di_nlink--; in xfs_create_tmpfile()
1382 error = xfs_iunlink(tp, ip); in xfs_create_tmpfile()
1394 *ipp = ip; in xfs_create_tmpfile()
1407 if (ip) { in xfs_create_tmpfile()
1408 xfs_finish_inode_setup(ip); in xfs_create_tmpfile()
1409 IRELE(ip); in xfs_create_tmpfile()
1552 struct xfs_inode *ip, in xfs_itruncate_extents() argument
1556 struct xfs_mount *mp = ip->i_mount; in xfs_itruncate_extents()
1568 ASSERT(xfs_isilocked(ip, XFS_ILOCK_EXCL)); in xfs_itruncate_extents()
1569 ASSERT(!atomic_read(&VFS_I(ip)->i_count) || in xfs_itruncate_extents()
1570 xfs_isilocked(ip, XFS_IOLOCK_EXCL)); in xfs_itruncate_extents()
1571 ASSERT(new_size <= XFS_ISIZE(ip)); in xfs_itruncate_extents()
1573 ASSERT(ip->i_itemp != NULL); in xfs_itruncate_extents()
1574 ASSERT(ip->i_itemp->ili_lock_flags == 0); in xfs_itruncate_extents()
1575 ASSERT(!XFS_NOT_DQATTACHED(mp, ip)); in xfs_itruncate_extents()
1577 trace_xfs_itruncate_extents_start(ip, new_size); in xfs_itruncate_extents()
1597 error = xfs_bunmapi(tp, ip, in xfs_itruncate_extents()
1612 xfs_trans_ijoin(tp, ip, 0); in xfs_itruncate_extents()
1621 xfs_trans_log_inode(tp, ip, XFS_ILOG_CORE); in xfs_itruncate_extents()
1628 xfs_trans_ijoin(tp, ip, 0); in xfs_itruncate_extents()
1647 xfs_trans_log_inode(tp, ip, XFS_ILOG_CORE); in xfs_itruncate_extents()
1649 trace_xfs_itruncate_extents_end(ip, new_size); in xfs_itruncate_extents()
1666 xfs_inode_t *ip) in xfs_release() argument
1668 xfs_mount_t *mp = ip->i_mount; in xfs_release()
1671 if (!S_ISREG(ip->i_d.di_mode) || (ip->i_d.di_mode == 0)) in xfs_release()
1691 truncated = xfs_iflags_test_and_clear(ip, XFS_ITRUNCATED); in xfs_release()
1693 xfs_iflags_clear(ip, XFS_IDIRTY_RELEASE); in xfs_release()
1694 if (ip->i_delayed_blks > 0) { in xfs_release()
1695 error = filemap_flush(VFS_I(ip)->i_mapping); in xfs_release()
1702 if (ip->i_d.di_nlink == 0) in xfs_release()
1705 if (xfs_can_free_eofblocks(ip, false)) { in xfs_release()
1728 if (xfs_iflags_test(ip, XFS_IDIRTY_RELEASE)) in xfs_release()
1731 error = xfs_free_eofblocks(mp, ip, true); in xfs_release()
1736 if (ip->i_delayed_blks) in xfs_release()
1737 xfs_iflags_set(ip, XFS_IDIRTY_RELEASE); in xfs_release()
1749 struct xfs_inode *ip) in xfs_inactive_truncate() argument
1751 struct xfs_mount *mp = ip->i_mount; in xfs_inactive_truncate()
1763 xfs_ilock(ip, XFS_ILOCK_EXCL); in xfs_inactive_truncate()
1764 xfs_trans_ijoin(tp, ip, 0); in xfs_inactive_truncate()
1771 ip->i_d.di_size = 0; in xfs_inactive_truncate()
1772 xfs_trans_log_inode(tp, ip, XFS_ILOG_CORE); in xfs_inactive_truncate()
1774 error = xfs_itruncate_extents(&tp, ip, XFS_DATA_FORK, 0); in xfs_inactive_truncate()
1778 ASSERT(ip->i_d.di_nextents == 0); in xfs_inactive_truncate()
1784 xfs_iunlock(ip, XFS_ILOCK_EXCL); in xfs_inactive_truncate()
1790 xfs_iunlock(ip, XFS_ILOCK_EXCL); in xfs_inactive_truncate()
1801 struct xfs_inode *ip) in xfs_inactive_ifree() argument
1806 struct xfs_mount *mp = ip->i_mount; in xfs_inactive_ifree()
1842 xfs_ilock(ip, XFS_ILOCK_EXCL); in xfs_inactive_ifree()
1843 xfs_trans_ijoin(tp, ip, 0); in xfs_inactive_ifree()
1846 error = xfs_ifree(tp, ip, &free_list); in xfs_inactive_ifree()
1859 xfs_iunlock(ip, XFS_ILOCK_EXCL); in xfs_inactive_ifree()
1866 xfs_trans_mod_dquot_byino(tp, ip, XFS_TRANS_DQ_ICOUNT, -1); in xfs_inactive_ifree()
1882 xfs_iunlock(ip, XFS_ILOCK_EXCL); in xfs_inactive_ifree()
1896 xfs_inode_t *ip) in xfs_inactive() argument
1906 if (ip->i_d.di_mode == 0) { in xfs_inactive()
1907 ASSERT(ip->i_df.if_real_bytes == 0); in xfs_inactive()
1908 ASSERT(ip->i_df.if_broot_bytes == 0); in xfs_inactive()
1912 mp = ip->i_mount; in xfs_inactive()
1918 if (ip->i_d.di_nlink != 0) { in xfs_inactive()
1924 if (xfs_can_free_eofblocks(ip, true)) in xfs_inactive()
1925 xfs_free_eofblocks(mp, ip, false); in xfs_inactive()
1930 if (S_ISREG(ip->i_d.di_mode) && in xfs_inactive()
1931 (ip->i_d.di_size != 0 || XFS_ISIZE(ip) != 0 || in xfs_inactive()
1932 ip->i_d.di_nextents > 0 || ip->i_delayed_blks > 0)) in xfs_inactive()
1935 error = xfs_qm_dqattach(ip, 0); in xfs_inactive()
1939 if (S_ISLNK(ip->i_d.di_mode)) in xfs_inactive()
1940 error = xfs_inactive_symlink(ip); in xfs_inactive()
1942 error = xfs_inactive_truncate(ip); in xfs_inactive()
1951 if (XFS_IFORK_Q(ip)) { in xfs_inactive()
1952 error = xfs_attr_inactive(ip); in xfs_inactive()
1957 ASSERT(!ip->i_afp); in xfs_inactive()
1958 ASSERT(ip->i_d.di_anextents == 0); in xfs_inactive()
1959 ASSERT(ip->i_d.di_forkoff == 0); in xfs_inactive()
1964 error = xfs_inactive_ifree(ip); in xfs_inactive()
1971 xfs_qm_dqdetach(ip); in xfs_inactive()
1982 xfs_inode_t *ip) in xfs_iunlink() argument
1994 ASSERT(ip->i_d.di_nlink == 0); in xfs_iunlink()
1995 ASSERT(ip->i_d.di_mode != 0); in xfs_iunlink()
2003 error = xfs_read_agi(mp, tp, XFS_INO_TO_AGNO(mp, ip->i_ino), &agibp); in xfs_iunlink()
2012 agino = XFS_INO_TO_AGINO(mp, ip->i_ino); in xfs_iunlink()
2025 error = xfs_imap_to_bp(mp, tp, &ip->i_imap, &dip, &ibp, in xfs_iunlink()
2032 offset = ip->i_imap.im_boffset + in xfs_iunlink()
2063 xfs_inode_t *ip) in xfs_iunlink_remove() argument
2081 agno = XFS_INO_TO_AGNO(mp, ip->i_ino); in xfs_iunlink_remove()
2097 agino = XFS_INO_TO_AGINO(mp, ip->i_ino); in xfs_iunlink_remove()
2111 error = xfs_imap_to_bp(mp, tp, &ip->i_imap, &dip, &ibp, in xfs_iunlink_remove()
2122 offset = ip->i_imap.im_boffset + in xfs_iunlink_remove()
2188 error = xfs_imap_to_bp(mp, tp, &ip->i_imap, &dip, &ibp, in xfs_iunlink_remove()
2200 offset = ip->i_imap.im_boffset + in xfs_iunlink_remove()
2249 xfs_inode_t *ip; in xfs_ifree_cluster() local
2324 ip = radix_tree_lookup(&pag->pag_ici_root, in xfs_ifree_cluster()
2328 if (!ip) { in xfs_ifree_cluster()
2340 spin_lock(&ip->i_flags_lock); in xfs_ifree_cluster()
2341 if (ip->i_ino != inum + i || in xfs_ifree_cluster()
2342 __xfs_iflags_test(ip, XFS_ISTALE)) { in xfs_ifree_cluster()
2343 spin_unlock(&ip->i_flags_lock); in xfs_ifree_cluster()
2347 spin_unlock(&ip->i_flags_lock); in xfs_ifree_cluster()
2356 if (ip != free_ip && in xfs_ifree_cluster()
2357 !xfs_ilock_nowait(ip, XFS_ILOCK_EXCL)) { in xfs_ifree_cluster()
2364 xfs_iflock(ip); in xfs_ifree_cluster()
2365 xfs_iflags_set(ip, XFS_ISTALE); in xfs_ifree_cluster()
2371 iip = ip->i_itemp; in xfs_ifree_cluster()
2372 if (!iip || xfs_inode_clean(ip)) { in xfs_ifree_cluster()
2373 ASSERT(ip != free_ip); in xfs_ifree_cluster()
2374 xfs_ifunlock(ip); in xfs_ifree_cluster()
2375 xfs_iunlock(ip, XFS_ILOCK_EXCL); in xfs_ifree_cluster()
2388 if (ip != free_ip) in xfs_ifree_cluster()
2389 xfs_iunlock(ip, XFS_ILOCK_EXCL); in xfs_ifree_cluster()
2413 xfs_inode_t *ip, in xfs_ifree() argument
2420 ASSERT(xfs_isilocked(ip, XFS_ILOCK_EXCL)); in xfs_ifree()
2421 ASSERT(ip->i_d.di_nlink == 0); in xfs_ifree()
2422 ASSERT(ip->i_d.di_nextents == 0); in xfs_ifree()
2423 ASSERT(ip->i_d.di_anextents == 0); in xfs_ifree()
2424 ASSERT(ip->i_d.di_size == 0 || !S_ISREG(ip->i_d.di_mode)); in xfs_ifree()
2425 ASSERT(ip->i_d.di_nblocks == 0); in xfs_ifree()
2430 error = xfs_iunlink_remove(tp, ip); in xfs_ifree()
2434 error = xfs_difree(tp, ip->i_ino, flist, &delete, &first_ino); in xfs_ifree()
2438 ip->i_d.di_mode = 0; /* mark incore inode as free */ in xfs_ifree()
2439 ip->i_d.di_flags = 0; in xfs_ifree()
2440 ip->i_d.di_dmevmask = 0; in xfs_ifree()
2441 ip->i_d.di_forkoff = 0; /* mark the attr fork not in use */ in xfs_ifree()
2442 ip->i_d.di_format = XFS_DINODE_FMT_EXTENTS; in xfs_ifree()
2443 ip->i_d.di_aformat = XFS_DINODE_FMT_EXTENTS; in xfs_ifree()
2448 ip->i_d.di_gen++; in xfs_ifree()
2449 xfs_trans_log_inode(tp, ip, XFS_ILOG_CORE); in xfs_ifree()
2452 error = xfs_ifree_cluster(ip, tp, first_ino); in xfs_ifree()
2464 struct xfs_inode *ip) in xfs_iunpin() argument
2466 ASSERT(xfs_isilocked(ip, XFS_ILOCK_EXCL|XFS_ILOCK_SHARED)); in xfs_iunpin()
2468 trace_xfs_inode_unpin_nowait(ip, _RET_IP_); in xfs_iunpin()
2471 xfs_log_force_lsn(ip->i_mount, ip->i_itemp->ili_last_lsn, 0); in xfs_iunpin()
2477 struct xfs_inode *ip) in __xfs_iunpin_wait() argument
2479 wait_queue_head_t *wq = bit_waitqueue(&ip->i_flags, __XFS_IPINNED_BIT); in __xfs_iunpin_wait()
2480 DEFINE_WAIT_BIT(wait, &ip->i_flags, __XFS_IPINNED_BIT); in __xfs_iunpin_wait()
2482 xfs_iunpin(ip); in __xfs_iunpin_wait()
2486 if (xfs_ipincount(ip)) in __xfs_iunpin_wait()
2488 } while (xfs_ipincount(ip)); in __xfs_iunpin_wait()
2494 struct xfs_inode *ip) in xfs_iunpin_wait() argument
2496 if (xfs_ipincount(ip)) in xfs_iunpin_wait()
2497 __xfs_iunpin_wait(ip); in xfs_iunpin_wait()
2531 xfs_inode_t *ip) in xfs_remove() argument
2535 int is_dir = S_ISDIR(ip->i_d.di_mode); in xfs_remove()
2552 error = xfs_qm_dqattach(ip, 0); in xfs_remove()
2583 xfs_lock_two_inodes(dp, ip, XFS_ILOCK_EXCL); in xfs_remove()
2586 xfs_trans_ijoin(tp, ip, XFS_ILOCK_EXCL); in xfs_remove()
2593 ASSERT(ip->i_d.di_nlink >= 2); in xfs_remove()
2594 if (ip->i_d.di_nlink != 2) { in xfs_remove()
2598 if (!xfs_dir_isempty(ip)) { in xfs_remove()
2609 error = xfs_droplink(tp, ip); in xfs_remove()
2623 error = xfs_droplink(tp, ip); in xfs_remove()
2628 error = xfs_dir_removename(tp, dp, name, ip->i_ino, in xfs_remove()
2651 if (is_dir && xfs_inode_is_filestream(ip)) in xfs_remove()
2652 xfs_filestream_deassociate(ip); in xfs_remove()
3196 xfs_inode_t *ip, in xfs_iflush_cluster() argument
3199 xfs_mount_t *mp = ip->i_mount; in xfs_iflush_cluster()
3211 pag = xfs_perag_get(mp, XFS_INO_TO_AGNO(mp, ip->i_ino)); in xfs_iflush_cluster()
3220 first_index = XFS_INO_TO_AGINO(mp, ip->i_ino) & mask; in xfs_iflush_cluster()
3230 if (iq == ip) in xfs_iflush_cluster()
3358 struct xfs_inode *ip, in xfs_iflush() argument
3361 struct xfs_mount *mp = ip->i_mount; in xfs_iflush()
3368 ASSERT(xfs_isilocked(ip, XFS_ILOCK_EXCL|XFS_ILOCK_SHARED)); in xfs_iflush()
3369 ASSERT(xfs_isiflocked(ip)); in xfs_iflush()
3370 ASSERT(ip->i_d.di_format != XFS_DINODE_FMT_BTREE || in xfs_iflush()
3371 ip->i_d.di_nextents > XFS_IFORK_MAXEXT(ip, XFS_DATA_FORK)); in xfs_iflush()
3375 xfs_iunpin_wait(ip); in xfs_iflush()
3385 if (xfs_iflags_test(ip, XFS_ISTALE)) { in xfs_iflush()
3386 xfs_ifunlock(ip); in xfs_iflush()
3412 error = xfs_imap_to_bp(mp, NULL, &ip->i_imap, &dip, &bp, XBF_TRYLOCK, in xfs_iflush()
3415 xfs_ifunlock(ip); in xfs_iflush()
3424 error = xfs_iflush_int(ip, bp); in xfs_iflush()
3439 error = xfs_iflush_cluster(ip, bp); in xfs_iflush()
3456 xfs_iflush_abort(ip, false); in xfs_iflush()
3462 struct xfs_inode *ip, in xfs_iflush_int() argument
3465 struct xfs_inode_log_item *iip = ip->i_itemp; in xfs_iflush_int()
3467 struct xfs_mount *mp = ip->i_mount; in xfs_iflush_int()
3469 ASSERT(xfs_isilocked(ip, XFS_ILOCK_EXCL|XFS_ILOCK_SHARED)); in xfs_iflush_int()
3470 ASSERT(xfs_isiflocked(ip)); in xfs_iflush_int()
3471 ASSERT(ip->i_d.di_format != XFS_DINODE_FMT_BTREE || in xfs_iflush_int()
3472 ip->i_d.di_nextents > XFS_IFORK_MAXEXT(ip, XFS_DATA_FORK)); in xfs_iflush_int()
3474 ASSERT(ip->i_d.di_version > 1); in xfs_iflush_int()
3477 dip = (xfs_dinode_t *)xfs_buf_offset(bp, ip->i_imap.im_boffset); in xfs_iflush_int()
3483 __func__, ip->i_ino, be16_to_cpu(dip->di_magic), dip); in xfs_iflush_int()
3486 if (XFS_TEST_ERROR(ip->i_d.di_magic != XFS_DINODE_MAGIC, in xfs_iflush_int()
3490 __func__, ip->i_ino, ip, ip->i_d.di_magic); in xfs_iflush_int()
3493 if (S_ISREG(ip->i_d.di_mode)) { in xfs_iflush_int()
3495 (ip->i_d.di_format != XFS_DINODE_FMT_EXTENTS) && in xfs_iflush_int()
3496 (ip->i_d.di_format != XFS_DINODE_FMT_BTREE), in xfs_iflush_int()
3500 __func__, ip->i_ino, ip); in xfs_iflush_int()
3503 } else if (S_ISDIR(ip->i_d.di_mode)) { in xfs_iflush_int()
3505 (ip->i_d.di_format != XFS_DINODE_FMT_EXTENTS) && in xfs_iflush_int()
3506 (ip->i_d.di_format != XFS_DINODE_FMT_BTREE) && in xfs_iflush_int()
3507 (ip->i_d.di_format != XFS_DINODE_FMT_LOCAL), in xfs_iflush_int()
3511 __func__, ip->i_ino, ip); in xfs_iflush_int()
3515 if (XFS_TEST_ERROR(ip->i_d.di_nextents + ip->i_d.di_anextents > in xfs_iflush_int()
3516 ip->i_d.di_nblocks, mp, XFS_ERRTAG_IFLUSH_5, in xfs_iflush_int()
3521 __func__, ip->i_ino, in xfs_iflush_int()
3522 ip->i_d.di_nextents + ip->i_d.di_anextents, in xfs_iflush_int()
3523 ip->i_d.di_nblocks, ip); in xfs_iflush_int()
3526 if (XFS_TEST_ERROR(ip->i_d.di_forkoff > mp->m_sb.sb_inodesize, in xfs_iflush_int()
3530 __func__, ip->i_ino, ip->i_d.di_forkoff, ip); in xfs_iflush_int()
3543 if (ip->i_d.di_version < 3) in xfs_iflush_int()
3544 ip->i_d.di_flushiter++; in xfs_iflush_int()
3552 xfs_dinode_to_disk(dip, &ip->i_d); in xfs_iflush_int()
3555 if (ip->i_d.di_flushiter == DI_MAX_FLUSH) in xfs_iflush_int()
3556 ip->i_d.di_flushiter = 0; in xfs_iflush_int()
3558 xfs_iflush_fork(ip, dip, iip, XFS_DATA_FORK); in xfs_iflush_int()
3559 if (XFS_IFORK_Q(ip)) in xfs_iflush_int()
3560 xfs_iflush_fork(ip, dip, iip, XFS_ATTR_FORK); in xfs_iflush_int()
3604 if (ip->i_d.di_version == 3) in xfs_iflush_int()