Lines Matching refs:ip

38 	xfs_inode_t	*ip,  in xfs_alert_fsblock_zero()  argument
41 xfs_alert_tag(ip->i_mount, XFS_PTAG_FSBLOCK_ZERO, in xfs_alert_fsblock_zero()
45 (unsigned long long)ip->i_ino, in xfs_alert_fsblock_zero()
50 xfs_bmap_mark_sick(ip, XFS_DATA_FORK); in xfs_alert_fsblock_zero()
56 struct xfs_inode *ip, in xfs_iomap_inode_sequence() argument
62 return READ_ONCE(ip->i_af.if_seq); in xfs_iomap_inode_sequence()
63 if ((iomap_flags & IOMAP_F_SHARED) && ip->i_cowfp) in xfs_iomap_inode_sequence()
64 cookie = (u64)READ_ONCE(ip->i_cowfp->if_seq) << 32; in xfs_iomap_inode_sequence()
65 return cookie | READ_ONCE(ip->i_df.if_seq); in xfs_iomap_inode_sequence()
77 struct xfs_inode *ip = XFS_I(inode); in xfs_iomap_valid() local
80 xfs_iomap_inode_sequence(ip, iomap->flags)) { in xfs_iomap_valid()
81 trace_xfs_iomap_invalid(ip, iomap); in xfs_iomap_valid()
85 XFS_ERRORTAG_DELAY(ip->i_mount, XFS_ERRTAG_WRITE_DELAY_MS); in xfs_iomap_valid()
95 struct xfs_inode *ip, in xfs_bmbt_to_iomap() argument
102 struct xfs_mount *mp = ip->i_mount; in xfs_bmbt_to_iomap()
103 struct xfs_buftarg *target = xfs_inode_buftarg(ip); in xfs_bmbt_to_iomap()
105 if (unlikely(!xfs_valid_startblock(ip, imap->br_startblock))) { in xfs_bmbt_to_iomap()
106 xfs_bmap_mark_sick(ip, XFS_DATA_FORK); in xfs_bmbt_to_iomap()
107 return xfs_alert_fsblock_zero(ip, imap); in xfs_bmbt_to_iomap()
118 iomap->addr = BBTOB(xfs_fsb_to_db(ip, imap->br_startblock)); in xfs_bmbt_to_iomap()
136 if (xfs_ipincount(ip) && in xfs_bmbt_to_iomap()
137 (ip->i_itemp->ili_fsync_fields & ~XFS_ILOG_TIMESTAMP)) in xfs_bmbt_to_iomap()
147 struct xfs_inode *ip, in xfs_hole_to_iomap() argument
152 struct xfs_buftarg *target = xfs_inode_buftarg(ip); in xfs_hole_to_iomap()
156 iomap->offset = XFS_FSB_TO_B(ip->i_mount, offset_fsb); in xfs_hole_to_iomap()
157 iomap->length = XFS_FSB_TO_B(ip->i_mount, end_fsb - offset_fsb); in xfs_hole_to_iomap()
175 struct xfs_inode *ip) in xfs_eof_alignment() argument
177 struct xfs_mount *mp = ip->i_mount; in xfs_eof_alignment()
180 if (!XFS_IS_REALTIME_INODE(ip)) { in xfs_eof_alignment()
194 if (align && XFS_ISIZE(ip) < XFS_FSB_TO_B(mp, align)) in xfs_eof_alignment()
207 struct xfs_inode *ip, in xfs_iomap_eof_align_last_fsb() argument
210 struct xfs_ifork *ifp = xfs_ifork_ptr(ip, XFS_DATA_FORK); in xfs_iomap_eof_align_last_fsb()
211 xfs_extlen_t extsz = xfs_get_extsz_hint(ip); in xfs_iomap_eof_align_last_fsb()
212 xfs_extlen_t align = xfs_eof_alignment(ip); in xfs_iomap_eof_align_last_fsb()
242 struct xfs_inode *ip, in xfs_iomap_write_direct() argument
249 struct xfs_mount *mp = ip->i_mount; in xfs_iomap_write_direct()
262 xfs_get_extsz_hint(ip)); in xfs_iomap_write_direct()
263 if (unlikely(XFS_IS_REALTIME_INODE(ip))) { in xfs_iomap_write_direct()
271 error = xfs_qm_dqattach(ip); in xfs_iomap_write_direct()
297 error = xfs_trans_alloc_inode(ip, &M_RES(mp)->tr_write, dblocks, in xfs_iomap_write_direct()
302 error = xfs_iext_count_extend(tp, ip, XFS_DATA_FORK, nr_exts); in xfs_iomap_write_direct()
311 error = xfs_bmapi_write(tp, ip, offset_fsb, count_fsb, bmapi_flags, 0, in xfs_iomap_write_direct()
323 if (unlikely(!xfs_valid_startblock(ip, imap->br_startblock))) { in xfs_iomap_write_direct()
324 xfs_bmap_mark_sick(ip, XFS_DATA_FORK); in xfs_iomap_write_direct()
325 error = xfs_alert_fsblock_zero(ip, imap); in xfs_iomap_write_direct()
329 *seq = xfs_iomap_inode_sequence(ip, 0); in xfs_iomap_write_direct()
330 xfs_iunlock(ip, XFS_ILOCK_EXCL); in xfs_iomap_write_direct()
340 struct xfs_inode *ip, in xfs_quota_need_throttle() argument
344 struct xfs_dquot *dq = xfs_inode_dquot(ip, type); in xfs_quota_need_throttle()
346 if (!dq || !xfs_this_quota_on(ip->i_mount, type)) in xfs_quota_need_throttle()
362 struct xfs_inode *ip, in xfs_quota_calc_throttle() argument
368 struct xfs_dquot *dq = xfs_inode_dquot(ip, type); in xfs_quota_calc_throttle()
429 struct xfs_inode *ip, in xfs_iomap_prealloc_size() argument
437 struct xfs_mount *mp = ip->i_mount; in xfs_iomap_prealloc_size()
438 struct xfs_ifork *ifp = xfs_ifork_ptr(ip, whichfork); in xfs_iomap_prealloc_size()
453 if (XFS_ISIZE(ip) < XFS_FSB_TO_B(mp, mp->m_allocsize_blocks)) in xfs_iomap_prealloc_size()
460 if (XFS_ISIZE(ip) < XFS_FSB_TO_B(mp, mp->m_dalign) || in xfs_iomap_prealloc_size()
503 if (unlikely(XFS_IS_REALTIME_INODE(ip))) in xfs_iomap_prealloc_size()
515 if (xfs_quota_need_throttle(ip, XFS_DQTYPE_USER, alloc_blocks)) in xfs_iomap_prealloc_size()
516 xfs_quota_calc_throttle(ip, XFS_DQTYPE_USER, &qblocks, &qshift, in xfs_iomap_prealloc_size()
518 if (xfs_quota_need_throttle(ip, XFS_DQTYPE_GROUP, alloc_blocks)) in xfs_iomap_prealloc_size()
519 xfs_quota_calc_throttle(ip, XFS_DQTYPE_GROUP, &qblocks, &qshift, in xfs_iomap_prealloc_size()
521 if (xfs_quota_need_throttle(ip, XFS_DQTYPE_PROJ, alloc_blocks)) in xfs_iomap_prealloc_size()
522 xfs_quota_calc_throttle(ip, XFS_DQTYPE_PROJ, &qblocks, &qshift, in xfs_iomap_prealloc_size()
556 trace_xfs_iomap_prealloc_size(ip, alloc_blocks, shift, in xfs_iomap_prealloc_size()
563 xfs_inode_t *ip, in xfs_iomap_write_unwritten() argument
568 xfs_mount_t *mp = ip->i_mount; in xfs_iomap_write_unwritten()
575 struct inode *inode = VFS_I(ip); in xfs_iomap_write_unwritten()
580 trace_xfs_unwritten_convert(ip, offset, count); in xfs_iomap_write_unwritten()
599 error = xfs_qm_dqattach(ip); in xfs_iomap_write_unwritten()
613 error = xfs_trans_alloc_inode(ip, &M_RES(mp)->tr_write, resblks, in xfs_iomap_write_unwritten()
618 error = xfs_iext_count_extend(tp, ip, XFS_DATA_FORK, in xfs_iomap_write_unwritten()
627 error = xfs_bmapi_write(tp, ip, offset_fsb, count_fsb, in xfs_iomap_write_unwritten()
643 i_size = xfs_new_eof(ip, i_size); in xfs_iomap_write_unwritten()
645 ip->i_disk_size = i_size; in xfs_iomap_write_unwritten()
646 xfs_trans_log_inode(tp, ip, XFS_ILOG_CORE); in xfs_iomap_write_unwritten()
650 xfs_iunlock(ip, XFS_ILOCK_EXCL); in xfs_iomap_write_unwritten()
654 if (unlikely(!xfs_valid_startblock(ip, imap.br_startblock))) { in xfs_iomap_write_unwritten()
655 xfs_bmap_mark_sick(ip, XFS_DATA_FORK); in xfs_iomap_write_unwritten()
656 return xfs_alert_fsblock_zero(ip, &imap); in xfs_iomap_write_unwritten()
675 xfs_iunlock(ip, XFS_ILOCK_EXCL); in xfs_iomap_write_unwritten()
701 struct xfs_inode *ip, in imap_needs_cow() argument
706 if (!xfs_is_cow_inode(ip)) in imap_needs_cow()
729 struct xfs_inode *ip, in xfs_ilock_for_iomap() argument
734 if (xfs_need_iread_extents(&ip->i_df)) in xfs_ilock_for_iomap()
736 if (!xfs_ilock_nowait(ip, *lockmode)) in xfs_ilock_for_iomap()
739 if (xfs_need_iread_extents(&ip->i_df)) in xfs_ilock_for_iomap()
741 xfs_ilock(ip, *lockmode); in xfs_ilock_for_iomap()
773 struct xfs_inode *ip = XFS_I(inode); in xfs_direct_write_iomap_begin() local
774 struct xfs_mount *mp = ip->i_mount; in xfs_direct_write_iomap_begin()
801 if (xfs_is_cow_inode(ip)) in xfs_direct_write_iomap_begin()
807 error = xfs_ilock_for_iomap(ip, flags, &lockmode); in xfs_direct_write_iomap_begin()
815 if (xfs_is_cow_inode(ip) && lockmode == XFS_ILOCK_SHARED) { in xfs_direct_write_iomap_begin()
816 xfs_iunlock(ip, lockmode); in xfs_direct_write_iomap_begin()
821 error = xfs_bmapi_read(ip, offset_fsb, end_fsb - offset_fsb, &imap, in xfs_direct_write_iomap_begin()
826 if (imap_needs_cow(ip, flags, &imap, nimaps)) { in xfs_direct_write_iomap_begin()
832 error = xfs_reflink_allocate_cow(ip, &imap, &cmap, &shared, in xfs_direct_write_iomap_begin()
871 seq = xfs_iomap_inode_sequence(ip, iomap_flags); in xfs_direct_write_iomap_begin()
872 xfs_iunlock(ip, lockmode); in xfs_direct_write_iomap_begin()
873 trace_xfs_iomap_found(ip, offset, length, XFS_DATA_FORK, &imap); in xfs_direct_write_iomap_begin()
874 return xfs_bmbt_to_iomap(ip, iomap, &imap, flags, iomap_flags, seq); in xfs_direct_write_iomap_begin()
893 if (offset + length > XFS_ISIZE(ip)) in xfs_direct_write_iomap_begin()
894 end_fsb = xfs_iomap_eof_align_last_fsb(ip, end_fsb); in xfs_direct_write_iomap_begin()
897 xfs_iunlock(ip, lockmode); in xfs_direct_write_iomap_begin()
899 error = xfs_iomap_write_direct(ip, offset_fsb, end_fsb - offset_fsb, in xfs_direct_write_iomap_begin()
904 trace_xfs_iomap_alloc(ip, offset, length, XFS_DATA_FORK, &imap); in xfs_direct_write_iomap_begin()
905 return xfs_bmbt_to_iomap(ip, iomap, &imap, flags, in xfs_direct_write_iomap_begin()
910 trace_xfs_iomap_found(ip, offset, length - offset, XFS_COW_FORK, &cmap); in xfs_direct_write_iomap_begin()
912 seq = xfs_iomap_inode_sequence(ip, 0); in xfs_direct_write_iomap_begin()
913 error = xfs_bmbt_to_iomap(ip, srcmap, &imap, flags, 0, seq); in xfs_direct_write_iomap_begin()
917 seq = xfs_iomap_inode_sequence(ip, IOMAP_F_SHARED); in xfs_direct_write_iomap_begin()
918 xfs_iunlock(ip, lockmode); in xfs_direct_write_iomap_begin()
919 return xfs_bmbt_to_iomap(ip, iomap, &cmap, flags, IOMAP_F_SHARED, seq); in xfs_direct_write_iomap_begin()
923 xfs_iunlock(ip, lockmode); in xfs_direct_write_iomap_begin()
940 struct xfs_inode *ip = XFS_I(inode); in xfs_dax_write_iomap_end() local
942 if (!xfs_is_cow_inode(ip)) in xfs_dax_write_iomap_end()
946 xfs_reflink_cancel_cow_range(ip, pos, length, true); in xfs_dax_write_iomap_end()
950 return xfs_reflink_end_cow(ip, pos, written); in xfs_dax_write_iomap_end()
967 struct xfs_inode *ip = XFS_I(inode); in xfs_buffered_write_iomap_begin() local
968 struct xfs_mount *mp = ip->i_mount; in xfs_buffered_write_iomap_begin()
985 if (xfs_get_extsz_hint(ip)) in xfs_buffered_write_iomap_begin()
989 error = xfs_qm_dqattach(ip); in xfs_buffered_write_iomap_begin()
993 error = xfs_ilock_for_iomap(ip, flags, &lockmode); in xfs_buffered_write_iomap_begin()
997 if (XFS_IS_CORRUPT(mp, !xfs_ifork_has_extents(&ip->i_df)) || in xfs_buffered_write_iomap_begin()
999 xfs_bmap_mark_sick(ip, XFS_DATA_FORK); in xfs_buffered_write_iomap_begin()
1006 error = xfs_iread_extents(NULL, ip, XFS_DATA_FORK); in xfs_buffered_write_iomap_begin()
1016 eof = !xfs_iext_lookup_extent(ip, &ip->i_df, offset_fsb, &icur, &imap); in xfs_buffered_write_iomap_begin()
1023 xfs_hole_to_iomap(ip, iomap, offset_fsb, imap.br_startoff); in xfs_buffered_write_iomap_begin()
1034 xfs_fileoff_t eof_fsb = XFS_B_TO_FSB(mp, XFS_ISIZE(ip)); in xfs_buffered_write_iomap_begin()
1053 if (xfs_is_cow_inode(ip)) { in xfs_buffered_write_iomap_begin()
1054 if (!ip->i_cowfp) { in xfs_buffered_write_iomap_begin()
1055 ASSERT(!xfs_is_reflink_inode(ip)); in xfs_buffered_write_iomap_begin()
1056 xfs_ifork_init_cow(ip); in xfs_buffered_write_iomap_begin()
1058 cow_eof = !xfs_iext_lookup_extent(ip, ip->i_cowfp, offset_fsb, in xfs_buffered_write_iomap_begin()
1061 trace_xfs_reflink_cow_found(ip, &cmap); in xfs_buffered_write_iomap_begin()
1072 if (!xfs_is_cow_inode(ip) || in xfs_buffered_write_iomap_begin()
1074 trace_xfs_iomap_found(ip, offset, count, XFS_DATA_FORK, in xfs_buffered_write_iomap_begin()
1082 error = xfs_bmap_trim_cow(ip, &imap, &shared); in xfs_buffered_write_iomap_begin()
1088 trace_xfs_iomap_found(ip, offset, count, XFS_DATA_FORK, in xfs_buffered_write_iomap_begin()
1112 if (xfs_is_always_cow_inode(ip)) in xfs_buffered_write_iomap_begin()
1116 if (eof && offset + count > XFS_ISIZE(ip)) { in xfs_buffered_write_iomap_begin()
1124 prealloc_blocks = xfs_iomap_prealloc_size(ip, allocfork, in xfs_buffered_write_iomap_begin()
1127 prealloc_blocks = xfs_iomap_prealloc_size(ip, allocfork, in xfs_buffered_write_iomap_begin()
1138 align = xfs_eof_alignment(ip); in xfs_buffered_write_iomap_begin()
1155 error = xfs_bmapi_reserve_delalloc(ip, allocfork, offset_fsb, in xfs_buffered_write_iomap_begin()
1161 trace_xfs_iomap_alloc(ip, offset, count, allocfork, &cmap); in xfs_buffered_write_iomap_begin()
1165 error = xfs_bmapi_reserve_delalloc(ip, allocfork, offset_fsb, in xfs_buffered_write_iomap_begin()
1171 trace_xfs_iomap_alloc(ip, offset, count, allocfork, &imap); in xfs_buffered_write_iomap_begin()
1173 seq = xfs_iomap_inode_sequence(ip, iomap_flags); in xfs_buffered_write_iomap_begin()
1174 xfs_iunlock(ip, lockmode); in xfs_buffered_write_iomap_begin()
1175 return xfs_bmbt_to_iomap(ip, iomap, &imap, flags, iomap_flags, seq); in xfs_buffered_write_iomap_begin()
1178 xfs_iunlock(ip, lockmode); in xfs_buffered_write_iomap_begin()
1180 error = xfs_bmapi_convert_delalloc(ip, XFS_DATA_FORK, offset, in xfs_buffered_write_iomap_begin()
1185 trace_xfs_iomap_alloc(ip, offset, count, XFS_DATA_FORK, &imap); in xfs_buffered_write_iomap_begin()
1190 error = xfs_bmbt_to_iomap(ip, srcmap, &imap, flags, 0, in xfs_buffered_write_iomap_begin()
1191 xfs_iomap_inode_sequence(ip, 0)); in xfs_buffered_write_iomap_begin()
1200 seq = xfs_iomap_inode_sequence(ip, iomap_flags); in xfs_buffered_write_iomap_begin()
1201 xfs_iunlock(ip, lockmode); in xfs_buffered_write_iomap_begin()
1202 return xfs_bmbt_to_iomap(ip, iomap, &cmap, flags, iomap_flags, seq); in xfs_buffered_write_iomap_begin()
1205 xfs_iunlock(ip, lockmode); in xfs_buffered_write_iomap_begin()
1281 struct xfs_inode *ip = XFS_I(inode); in xfs_read_iomap_begin() local
1282 struct xfs_mount *mp = ip->i_mount; in xfs_read_iomap_begin()
1296 error = xfs_ilock_for_iomap(ip, flags, &lockmode); in xfs_read_iomap_begin()
1299 error = xfs_bmapi_read(ip, offset_fsb, end_fsb - offset_fsb, &imap, in xfs_read_iomap_begin()
1302 error = xfs_reflink_trim_around_shared(ip, &imap, &shared); in xfs_read_iomap_begin()
1303 seq = xfs_iomap_inode_sequence(ip, shared ? IOMAP_F_SHARED : 0); in xfs_read_iomap_begin()
1304 xfs_iunlock(ip, lockmode); in xfs_read_iomap_begin()
1308 trace_xfs_iomap_found(ip, offset, length, XFS_DATA_FORK, &imap); in xfs_read_iomap_begin()
1309 return xfs_bmbt_to_iomap(ip, iomap, &imap, flags, in xfs_read_iomap_begin()
1326 struct xfs_inode *ip = XFS_I(inode); in xfs_seek_iomap_begin() local
1327 struct xfs_mount *mp = ip->i_mount; in xfs_seek_iomap_begin()
1340 lockmode = xfs_ilock_data_map_shared(ip); in xfs_seek_iomap_begin()
1341 error = xfs_iread_extents(NULL, ip, XFS_DATA_FORK); in xfs_seek_iomap_begin()
1345 if (xfs_iext_lookup_extent(ip, &ip->i_df, offset_fsb, &icur, &imap)) { in xfs_seek_iomap_begin()
1363 if (xfs_inode_has_cow_data(ip) && in xfs_seek_iomap_begin()
1364 xfs_iext_lookup_extent(ip, ip->i_cowfp, offset_fsb, &icur, &cmap)) in xfs_seek_iomap_begin()
1370 seq = xfs_iomap_inode_sequence(ip, IOMAP_F_SHARED); in xfs_seek_iomap_begin()
1371 error = xfs_bmbt_to_iomap(ip, iomap, &cmap, flags, in xfs_seek_iomap_begin()
1393 seq = xfs_iomap_inode_sequence(ip, 0); in xfs_seek_iomap_begin()
1395 error = xfs_bmbt_to_iomap(ip, iomap, &imap, flags, 0, seq); in xfs_seek_iomap_begin()
1397 xfs_iunlock(ip, lockmode); in xfs_seek_iomap_begin()
1414 struct xfs_inode *ip = XFS_I(inode); in xfs_xattr_iomap_begin() local
1415 struct xfs_mount *mp = ip->i_mount; in xfs_xattr_iomap_begin()
1426 lockmode = xfs_ilock_attr_map_shared(ip); in xfs_xattr_iomap_begin()
1429 if (!xfs_inode_has_attr_fork(ip) || !ip->i_af.if_nextents) { in xfs_xattr_iomap_begin()
1434 ASSERT(ip->i_af.if_format != XFS_DINODE_FMT_LOCAL); in xfs_xattr_iomap_begin()
1435 error = xfs_bmapi_read(ip, offset_fsb, end_fsb - offset_fsb, &imap, in xfs_xattr_iomap_begin()
1439 seq = xfs_iomap_inode_sequence(ip, IOMAP_F_XATTR); in xfs_xattr_iomap_begin()
1440 xfs_iunlock(ip, lockmode); in xfs_xattr_iomap_begin()
1445 return xfs_bmbt_to_iomap(ip, iomap, &imap, flags, IOMAP_F_XATTR, seq); in xfs_xattr_iomap_begin()
1454 struct xfs_inode *ip, in xfs_zero_range() argument
1459 struct inode *inode = VFS_I(ip); in xfs_zero_range()
1461 xfs_assert_ilocked(ip, XFS_IOLOCK_EXCL | XFS_MMAPLOCK_EXCL); in xfs_zero_range()
1472 struct xfs_inode *ip, in xfs_truncate_page() argument
1476 struct inode *inode = VFS_I(ip); in xfs_truncate_page()