• Home
  • History
  • Annotate
  • Raw
  • Download
  • only in /netgear-R7000-V1.0.7.12_1.2.5/components/opensource/linux/linux-2.6.36/fs/xfs/

Lines Matching refs:ip

59 xfs_bmap_check_leaf_extents(xfs_btree_cur_t *cur, xfs_inode_t *ip, int whichfork);
75 xfs_inode_t *ip, /* incore inode pointer */
86 xfs_inode_t *ip, /* incore inode pointer */
97 xfs_inode_t *ip, /* incore inode pointer */
113 xfs_inode_t *ip, /* incore inode pointer */
129 xfs_inode_t *ip, /* incore inode pointer */
141 xfs_inode_t *ip, /* incore inode pointer */
154 xfs_inode_t *ip, /* incore inode pointer */
177 xfs_inode_t *ip, /* incore inode pointer */
188 xfs_inode_t *ip, /* incore inode pointer */
215 xfs_inode_t *ip, /* incore inode pointer */
231 xfs_inode_t *ip, /* incore inode pointer */
246 xfs_inode_t *ip, /* incore inode pointer */
262 xfs_inode_t *ip, /* incore inode pointer */
269 * for ip's delayed extent of length "len".
273 xfs_inode_t *ip, /* incore inode pointer */
373 xfs_inode_t *ip, /* incore inode pointer */
383 mp = ip->i_mount;
384 if (ip->i_df.if_broot_bytes <= XFS_IFORK_DSIZE(ip))
387 cur = xfs_bmbt_init_cursor(mp, tp, ip, XFS_DATA_FORK);
416 xfs_inode_t *ip, /* incore inode pointer */
424 if (ip->i_d.di_nextents * sizeof(xfs_bmbt_rec_t) <= XFS_IFORK_DSIZE(ip))
427 error = xfs_bmap_extents_to_btree(tp, ip, firstblock, flist, &cur, 0,
443 xfs_inode_t *ip, /* incore inode pointer */
452 if (ip->i_df.if_bytes <= XFS_IFORK_DSIZE(ip))
454 if ((ip->i_d.di_mode & S_IFMT) == S_IFDIR) {
455 mp = ip->i_mount;
457 dargs.dp = ip;
465 error = xfs_bmap_local_to_extents(tp, ip, firstblock, 1, flags,
476 xfs_inode_t *ip, /* incore inode pointer */
496 ifp = XFS_IFORK_PTR(ip, whichfork);
507 xfs_iext_insert(ip, 0, 1, new,
513 XFS_IFORK_NEXT_SET(ip, whichfork, 1);
525 if ((error = xfs_bmap_add_extent_hole_delay(ip, idx, new,
536 if ((error = xfs_bmap_add_extent_hole_real(ip, idx, cur, new,
560 if ((error = xfs_bmap_add_extent_delay_real(ip,
567 ip, idx, &cur, new, &logflags)))
572 ip, idx, &cur, new, &logflags)))
584 if ((error = xfs_bmap_add_extent_hole_real(ip, idx, cur,
594 if (XFS_IFORK_FORMAT(ip, whichfork) == XFS_DINODE_FMT_EXTENTS &&
595 XFS_IFORK_NEXTENTS(ip, whichfork) > ifp->if_ext_max) {
599 error = xfs_bmap_extents_to_btree(ip->i_transp, ip, first,
617 xfs_mod_incore_sb(ip->i_mount, XFS_SBS_FDBLOCKS,
630 xfs_bmap_check_leaf_extents(*curp, ip, whichfork);
642 xfs_inode_t *ip, /* incore inode pointer */
675 ifp = XFS_IFORK_PTR(ip, XFS_DATA_FORK);
715 if (idx < ip->i_df.if_bytes / (uint)sizeof(xfs_bmbt_rec_t) - 1) {
748 trace_xfs_bmap_pre_update(ip, idx - 1, state, _THIS_IP_);
752 trace_xfs_bmap_post_update(ip, idx - 1, state, _THIS_IP_);
754 xfs_iext_remove(ip, idx, 2, state);
755 ip->i_df.if_lastex = idx - 1;
756 ip->i_d.di_nextents--;
787 trace_xfs_bmap_pre_update(ip, idx - 1, state, _THIS_IP_);
790 trace_xfs_bmap_post_update(ip, idx - 1, state, _THIS_IP_);
792 ip->i_df.if_lastex = idx - 1;
793 xfs_iext_remove(ip, idx, 1, state);
817 trace_xfs_bmap_pre_update(ip, idx, state, _THIS_IP_);
821 trace_xfs_bmap_post_update(ip, idx, state, _THIS_IP_);
823 ip->i_df.if_lastex = idx;
824 xfs_iext_remove(ip, idx + 1, 1, state);
849 trace_xfs_bmap_pre_update(ip, idx, state, _THIS_IP_);
851 trace_xfs_bmap_post_update(ip, idx, state, _THIS_IP_);
853 ip->i_df.if_lastex = idx;
854 ip->i_d.di_nextents++;
877 trace_xfs_bmap_pre_update(ip, idx - 1, state, _THIS_IP_);
882 trace_xfs_bmap_post_update(ip, idx - 1, state, _THIS_IP_);
885 trace_xfs_bmap_pre_update(ip, idx, state, _THIS_IP_);
887 ip->i_df.if_lastex = idx - 1;
904 temp = XFS_FILBLKS_MIN(xfs_bmap_worst_indlen(ip, temp),
907 trace_xfs_bmap_post_update(ip, idx, state, _THIS_IP_);
916 trace_xfs_bmap_pre_update(ip, idx, state, _THIS_IP_);
920 xfs_iext_insert(ip, idx, 1, new, state);
921 ip->i_df.if_lastex = idx;
922 ip->i_d.di_nextents++;
937 if (ip->i_d.di_format == XFS_DINODE_FMT_EXTENTS &&
938 ip->i_d.di_nextents > ip->i_df.if_ext_max) {
939 error = xfs_bmap_extents_to_btree(ip->i_transp, ip,
946 temp = XFS_FILBLKS_MIN(xfs_bmap_worst_indlen(ip, temp),
951 trace_xfs_bmap_post_update(ip, idx + 1, state, _THIS_IP_);
961 trace_xfs_bmap_pre_update(ip, idx, state, _THIS_IP_);
962 trace_xfs_bmap_pre_update(ip, idx + 1, state, _THIS_IP_);
968 trace_xfs_bmap_post_update(ip, idx + 1, state, _THIS_IP_);
969 ip->i_df.if_lastex = idx + 1;
986 temp = XFS_FILBLKS_MIN(xfs_bmap_worst_indlen(ip, temp),
989 trace_xfs_bmap_post_update(ip, idx, state, _THIS_IP_);
999 trace_xfs_bmap_pre_update(ip, idx, state, _THIS_IP_);
1001 xfs_iext_insert(ip, idx + 1, 1, new, state);
1002 ip->i_df.if_lastex = idx + 1;
1003 ip->i_d.di_nextents++;
1018 if (ip->i_d.di_format == XFS_DINODE_FMT_EXTENTS &&
1019 ip->i_d.di_nextents > ip->i_df.if_ext_max) {
1020 error = xfs_bmap_extents_to_btree(ip->i_transp, ip,
1027 temp = XFS_FILBLKS_MIN(xfs_bmap_worst_indlen(ip, temp),
1032 trace_xfs_bmap_post_update(ip, idx, state, _THIS_IP_);
1043 trace_xfs_bmap_pre_update(ip, idx, 0, _THIS_IP_);
1051 xfs_iext_insert(ip, idx + 1, 2, &r[0], state);
1052 ip->i_df.if_lastex = idx + 1;
1053 ip->i_d.di_nextents++;
1068 if (ip->i_d.di_format == XFS_DINODE_FMT_EXTENTS &&
1069 ip->i_d.di_nextents > ip->i_df.if_ext_max) {
1070 error = xfs_bmap_extents_to_btree(ip->i_transp, ip,
1077 temp = xfs_bmap_worst_indlen(ip, temp);
1078 temp2 = xfs_bmap_worst_indlen(ip, temp2);
1082 xfs_mod_incore_sb(ip->i_mount, XFS_SBS_FDBLOCKS, -((int64_t)diff), rsvd)) {
1092 !xfs_mod_incore_sb(ip->i_mount,
1100 !xfs_mod_incore_sb(ip->i_mount,
1108 trace_xfs_bmap_post_update(ip, idx, state, _THIS_IP_);
1109 trace_xfs_bmap_pre_update(ip, idx + 2, state, _THIS_IP_);
1112 trace_xfs_bmap_post_update(ip, idx + 2, state, _THIS_IP_);
1143 xfs_inode_t *ip, /* incore inode pointer */
1170 ifp = XFS_IFORK_PTR(ip, XFS_DATA_FORK);
1214 if (idx < ip->i_df.if_bytes / (uint)sizeof(xfs_bmbt_rec_t) - 1) {
1245 trace_xfs_bmap_pre_update(ip, idx - 1, state, _THIS_IP_);
1249 trace_xfs_bmap_post_update(ip, idx - 1, state, _THIS_IP_);
1251 xfs_iext_remove(ip, idx, 2, state);
1252 ip->i_df.if_lastex = idx - 1;
1253 ip->i_d.di_nextents -= 2;
1288 trace_xfs_bmap_pre_update(ip, idx - 1, state, _THIS_IP_);
1291 trace_xfs_bmap_post_update(ip, idx - 1, state, _THIS_IP_);
1293 ip->i_df.if_lastex = idx - 1;
1294 xfs_iext_remove(ip, idx, 1, state);
1295 ip->i_d.di_nextents--;
1324 trace_xfs_bmap_pre_update(ip, idx, state, _THIS_IP_);
1328 trace_xfs_bmap_post_update(ip, idx, state, _THIS_IP_);
1329 ip->i_df.if_lastex = idx;
1330 xfs_iext_remove(ip, idx + 1, 1, state);
1331 ip->i_d.di_nextents--;
1361 trace_xfs_bmap_pre_update(ip, idx, state, _THIS_IP_);
1363 trace_xfs_bmap_post_update(ip, idx, state, _THIS_IP_);
1365 ip->i_df.if_lastex = idx;
1387 trace_xfs_bmap_pre_update(ip, idx - 1, state, _THIS_IP_);
1392 trace_xfs_bmap_post_update(ip, idx - 1, state, _THIS_IP_);
1394 trace_xfs_bmap_pre_update(ip, idx, state, _THIS_IP_);
1399 trace_xfs_bmap_post_update(ip, idx, state, _THIS_IP_);
1401 ip->i_df.if_lastex = idx - 1;
1432 trace_xfs_bmap_pre_update(ip, idx, state, _THIS_IP_);
1439 trace_xfs_bmap_post_update(ip, idx, state, _THIS_IP_);
1441 xfs_iext_insert(ip, idx, 1, new, state);
1442 ip->i_df.if_lastex = idx;
1443 ip->i_d.di_nextents++;
1471 trace_xfs_bmap_pre_update(ip, idx, state, _THIS_IP_);
1472 trace_xfs_bmap_pre_update(ip, idx + 1, state, _THIS_IP_);
1475 trace_xfs_bmap_post_update(ip, idx, state, _THIS_IP_);
1479 trace_xfs_bmap_post_update(ip, idx + 1, state, _THIS_IP_);
1481 ip->i_df.if_lastex = idx + 1;
1511 trace_xfs_bmap_pre_update(ip, idx, state, _THIS_IP_);
1514 trace_xfs_bmap_post_update(ip, idx, state, _THIS_IP_);
1516 xfs_iext_insert(ip, idx + 1, 1, new, state);
1517 ip->i_df.if_lastex = idx + 1;
1518 ip->i_d.di_nextents++;
1551 trace_xfs_bmap_pre_update(ip, idx, state, _THIS_IP_);
1554 trace_xfs_bmap_post_update(ip, idx, state, _THIS_IP_);
1562 xfs_iext_insert(ip, idx + 1, 2, &r[0], state);
1563 ip->i_df.if_lastex = idx + 1;
1564 ip->i_d.di_nextents += 2;
1632 xfs_inode_t *ip, /* incore inode pointer */
1647 ifp = XFS_IFORK_PTR(ip, XFS_DATA_FORK);
1667 if (idx < ip->i_df.if_bytes / (uint)sizeof(xfs_bmbt_rec_t)) {
1705 trace_xfs_bmap_pre_update(ip, idx - 1, state, _THIS_IP_);
1710 newlen = xfs_bmap_worst_indlen(ip, temp);
1713 trace_xfs_bmap_post_update(ip, idx - 1, state, _THIS_IP_);
1715 xfs_iext_remove(ip, idx, 1, state);
1716 ip->i_df.if_lastex = idx - 1;
1726 trace_xfs_bmap_pre_update(ip, idx - 1, state, _THIS_IP_);
1730 newlen = xfs_bmap_worst_indlen(ip, temp);
1733 trace_xfs_bmap_post_update(ip, idx - 1, state, _THIS_IP_);
1735 ip->i_df.if_lastex = idx - 1;
1744 trace_xfs_bmap_pre_update(ip, idx, state, _THIS_IP_);
1748 newlen = xfs_bmap_worst_indlen(ip, temp);
1751 trace_xfs_bmap_post_update(ip, idx, state, _THIS_IP_);
1753 ip->i_df.if_lastex = idx;
1763 xfs_iext_insert(ip, idx, 1, new, state);
1764 ip->i_df.if_lastex = idx;
1769 xfs_mod_incore_sb(ip->i_mount, XFS_SBS_FDBLOCKS,
1785 xfs_inode_t *ip, /* incore inode pointer */
1801 ifp = XFS_IFORK_PTR(ip, whichfork);
1862 trace_xfs_bmap_pre_update(ip, idx - 1, state, _THIS_IP_);
1866 trace_xfs_bmap_post_update(ip, idx - 1, state, _THIS_IP_);
1868 xfs_iext_remove(ip, idx, 1, state);
1870 XFS_IFORK_NEXT_SET(ip, whichfork,
1871 XFS_IFORK_NEXTENTS(ip, whichfork) - 1);
1904 trace_xfs_bmap_pre_update(ip, idx - 1, state, _THIS_IP_);
1907 trace_xfs_bmap_post_update(ip, idx - 1, state, _THIS_IP_);
1935 trace_xfs_bmap_pre_update(ip, idx, state, _THIS_IP_);
1939 trace_xfs_bmap_post_update(ip, idx, state, _THIS_IP_);
1967 xfs_iext_insert(ip, idx, 1, new, state);
1969 XFS_IFORK_NEXT_SET(ip, whichfork,
1970 XFS_IFORK_NEXTENTS(ip, whichfork) + 1);
2175 mp = ap->ip->i_mount;
2177 rt = XFS_IS_REALTIME_INODE(ap->ip) && ap->userdata;
2318 mp = ap->ip->i_mount;
2319 align = xfs_get_extsz_hint(ap->ip);
2385 ap->ip->i_d.di_nblocks += ralen;
2386 xfs_trans_log_inode(ap->tp, ap->ip, XFS_ILOG_CORE);
2388 ap->ip->i_delayed_blks -= ralen;
2393 xfs_trans_mod_dquot_byino(ap->tp, ap->ip,
2408 struct xfs_mount *mp = ap->ip->i_mount;
2414 if (ap->userdata && xfs_inode_is_filestream(ap->ip))
2451 if (xfs_inode_is_filestream(ap->ip)) {
2511 if (xfs_inode_is_filestream(ap->ip))
2534 mp = ap->ip->i_mount;
2535 align = ap->userdata ? xfs_get_extsz_hint(ap->ip) : 0;
2546 if (ap->userdata && xfs_inode_is_filestream(ap->ip)) {
2547 ag = xfs_filestream_lookup_ag(ap->ip);
2551 ap->rval = XFS_INO_TO_FSB(mp, ap->ip->i_ino);
2581 if (xfs_inode_is_filestream(ap->ip))
2708 ap->ip->i_d.di_nblocks += args.len;
2709 xfs_trans_log_inode(ap->tp, ap->ip, XFS_ILOG_CORE);
2711 ap->ip->i_delayed_blks -= args.len;
2716 xfs_trans_mod_dquot_byino(ap->tp, ap->ip,
2735 if (XFS_IS_REALTIME_INODE(ap->ip) && ap->userdata)
2749 xfs_inode_t *ip, /* incore inode pointer */
2764 mp = ip->i_mount;
2765 ifp = XFS_IFORK_PTR(ip, whichfork);
2767 ASSERT(XFS_IFORK_FORMAT(ip, whichfork) == XFS_DINODE_FMT_BTREE);
2786 ip->i_d.di_nblocks--;
2787 xfs_trans_mod_dquot_byino(tp, ip, XFS_TRANS_DQ_BCOUNT, -1L);
2791 xfs_iroot_realloc(ip, -1, whichfork);
2794 XFS_IFORK_FMT_SET(ip, whichfork, XFS_DINODE_FMT_EXTENTS);
2805 xfs_inode_t *ip, /* incore inode pointer */
2842 mp = ip->i_mount;
2843 ifp = XFS_IFORK_PTR(ip, whichfork);
2866 if (whichfork == XFS_DATA_FORK && XFS_IS_REALTIME_INODE(ip)) {
2878 if ((error = xfs_rtfree_extent(ip->i_transp, bno,
2921 xfs_iext_remove(ip, idx, 1,
2926 XFS_IFORK_NEXT_SET(ip, whichfork,
2927 XFS_IFORK_NEXTENTS(ip, whichfork) - 1);
2942 trace_xfs_bmap_pre_update(ip, idx, state, _THIS_IP_);
2948 temp = XFS_FILBLKS_MIN(xfs_bmap_worst_indlen(ip, temp),
2951 trace_xfs_bmap_post_update(ip, idx, state, _THIS_IP_);
2956 trace_xfs_bmap_post_update(ip, idx, state, _THIS_IP_);
2972 trace_xfs_bmap_pre_update(ip, idx, state, _THIS_IP_);
2976 temp = XFS_FILBLKS_MIN(xfs_bmap_worst_indlen(ip, temp),
2979 trace_xfs_bmap_post_update(ip, idx, state, _THIS_IP_);
2983 trace_xfs_bmap_post_update(ip, idx, state, _THIS_IP_);
3000 trace_xfs_bmap_pre_update(ip, idx, state, _THIS_IP_);
3061 XFS_IFORK_NEXT_SET(ip, whichfork,
3062 XFS_IFORK_NEXTENTS(ip, whichfork) + 1);
3065 temp = xfs_bmap_worst_indlen(ip, temp);
3067 temp2 = xfs_bmap_worst_indlen(ip, temp2);
3087 trace_xfs_bmap_post_update(ip, idx, state, _THIS_IP_);
3088 xfs_iext_insert(ip, idx + 1, 1, &new, state);
3102 ip->i_d.di_nblocks -= nblks;
3107 xfs_trans_mod_dquot_byino(tp, ip, qfield, (long)-nblks);
3147 xfs_inode_t *ip, /* incore inode pointer */
3170 ifp = XFS_IFORK_PTR(ip, whichfork);
3171 ASSERT(XFS_IFORK_FORMAT(ip, whichfork) == XFS_DINODE_FMT_EXTENTS);
3173 XFS_IFORK_SIZE(ip, whichfork) / (uint)sizeof(xfs_bmbt_rec_t));
3177 xfs_iroot_realloc(ip, 1, whichfork);
3193 mp = ip->i_mount;
3194 cur = xfs_bmbt_init_cursor(mp, tp, ip, whichfork);
3201 XFS_IFORK_FMT_SET(ip, whichfork, XFS_DINODE_FMT_BTREE);
3207 args.fsbno = XFS_INO_TO_FSB(mp, ip->i_ino);
3221 xfs_iroot_realloc(ip, -1, whichfork);
3235 ip->i_d.di_nblocks++;
3236 xfs_trans_mod_dquot_byino(tp, ip, XFS_TRANS_DQ_BCOUNT, 1L);
3256 ASSERT(cnt == XFS_IFORK_NEXTENTS(ip, whichfork));
3286 struct xfs_inode *ip)
3288 struct xfs_mount *mp = ip->i_mount;
3310 xfs_inode_t *ip,
3314 ip->i_d.di_format != XFS_DINODE_FMT_DEV &&
3315 ip->i_d.di_format != XFS_DINODE_FMT_UUID &&
3316 ip->i_d.di_format != XFS_DINODE_FMT_BTREE) {
3317 uint dfl_forkoff = xfs_default_attroffset(ip) >> 3;
3319 if (dfl_forkoff > ip->i_d.di_forkoff) {
3320 ip->i_d.di_forkoff = dfl_forkoff;
3321 ip->i_df.if_ext_max =
3322 XFS_IFORK_DSIZE(ip) / sizeof(xfs_bmbt_rec_t);
3323 ip->i_afp->if_ext_max =
3324 XFS_IFORK_ASIZE(ip) / sizeof(xfs_bmbt_rec_t);
3338 xfs_inode_t *ip, /* incore inode pointer */
3352 ASSERT(!((ip->i_d.di_mode & S_IFMT) == S_IFREG &&
3354 ifp = XFS_IFORK_PTR(ip, whichfork);
3355 ASSERT(XFS_IFORK_FORMAT(ip, whichfork) == XFS_DINODE_FMT_LOCAL);
3364 args.mp = ip->i_mount;
3373 args.fsbno = XFS_INO_TO_FSB(args.mp, ip->i_ino);
3395 xfs_bmap_forkoff_reset(args.mp, ip, whichfork);
3396 xfs_idata_realloc(ip, -ifp->if_bytes, whichfork);
3400 trace_xfs_bmap_post_update(ip, 0,
3403 XFS_IFORK_NEXT_SET(ip, whichfork, 1);
3404 ip->i_d.di_nblocks = 1;
3405 xfs_trans_mod_dquot_byino(tp, ip,
3409 ASSERT(XFS_IFORK_NEXTENTS(ip, whichfork) == 0);
3410 xfs_bmap_forkoff_reset(ip->i_mount, ip, whichfork);
3414 XFS_IFORK_FMT_SET(ip, whichfork, XFS_DINODE_FMT_EXTENTS);
3481 xfs_inode_t *ip, /* incore inode pointer */
3493 ifp = XFS_IFORK_PTR(ip, fork);
3498 !(XFS_IS_REALTIME_INODE(ip) && fork == XFS_DATA_FORK))) {
3499 xfs_cmn_err(XFS_PTAG_FSBLOCK_ZERO, CE_ALERT, ip->i_mount,
3503 (unsigned long long)ip->i_ino,
3517 * for ip's delayed extent of length "len".
3521 xfs_inode_t *ip, /* incore inode pointer */
3529 mp = ip->i_mount;
3548 * Must not be in a transaction, ip must not be locked.
3552 xfs_inode_t *ip, /* incore inode pointer */
3566 ASSERT(XFS_IFORK_Q(ip) == 0);
3567 ASSERT(ip->i_df.if_ext_max ==
3568 XFS_IFORK_DSIZE(ip) / (uint)sizeof(xfs_bmbt_rec_t));
3570 mp = ip->i_mount;
3571 ASSERT(!XFS_NOT_DQATTACHED(mp, ip));
3579 xfs_ilock(ip, XFS_ILOCK_EXCL);
3580 error = xfs_trans_reserve_quota_nblks(tp, ip, blks, 0, rsvd ?
3584 xfs_iunlock(ip, XFS_ILOCK_EXCL);
3588 if (XFS_IFORK_Q(ip))
3590 if (ip->i_d.di_aformat != XFS_DINODE_FMT_EXTENTS) {
3594 ASSERT(ip->i_d.di_aformat == 0);
3595 ip->i_d.di_aformat = XFS_DINODE_FMT_EXTENTS;
3597 ASSERT(ip->i_d.di_anextents == 0);
3599 xfs_trans_ijoin_ref(tp, ip, XFS_ILOCK_EXCL);
3600 xfs_trans_log_inode(tp, ip, XFS_ILOG_CORE);
3602 switch (ip->i_d.di_format) {
3604 ip->i_d.di_forkoff = roundup(sizeof(xfs_dev_t), 8) >> 3;
3607 ip->i_d.di_forkoff = roundup(sizeof(uuid_t), 8) >> 3;
3612 ip->i_d.di_forkoff = xfs_attr_shortform_bytesfit(ip, size);
3613 if (!ip->i_d.di_forkoff)
3614 ip->i_d.di_forkoff = xfs_default_attroffset(ip) >> 3;
3623 ip->i_df.if_ext_max =
3624 XFS_IFORK_DSIZE(ip) / (uint)sizeof(xfs_bmbt_rec_t);
3625 ASSERT(ip->i_afp == NULL);
3626 ip->i_afp = kmem_zone_zalloc(xfs_ifork_zone, KM_SLEEP);
3627 ip->i_afp->if_ext_max =
3628 XFS_IFORK_ASIZE(ip) / (uint)sizeof(xfs_bmbt_rec_t);
3629 ip->i_afp->if_flags = XFS_IFEXTENTS;
3632 switch (ip->i_d.di_format) {
3634 error = xfs_bmap_add_attrfork_local(tp, ip, &firstblock, &flist,
3638 error = xfs_bmap_add_attrfork_extents(tp, ip, &firstblock,
3642 error = xfs_bmap_add_attrfork_btree(tp, ip, &firstblock, &flist,
3650 xfs_trans_log_inode(tp, ip, logflags);
3675 ASSERT(ip->i_df.if_ext_max ==
3676 XFS_IFORK_DSIZE(ip) / (uint)sizeof(xfs_bmbt_rec_t));
3681 xfs_iunlock(ip, XFS_ILOCK_EXCL);
3684 ASSERT(ip->i_df.if_ext_max ==
3685 XFS_IFORK_DSIZE(ip) / (uint)sizeof(xfs_bmbt_rec_t));
3762 * (xfs_default_attroffset(ip) >> 3) because we could have mounted
3911 xfs_inode_t *ip, /* incore inode */
3925 ASSERT(XFS_IFORK_FORMAT(ip, whichfork) == XFS_DINODE_FMT_BTREE ||
3926 XFS_IFORK_FORMAT(ip, whichfork) == XFS_DINODE_FMT_EXTENTS ||
3927 XFS_IFORK_FORMAT(ip, whichfork) == XFS_DINODE_FMT_LOCAL);
3928 if (XFS_IFORK_FORMAT(ip, whichfork) == XFS_DINODE_FMT_LOCAL) {
3932 ifp = XFS_IFORK_PTR(ip, whichfork);
3934 (error = xfs_iread_extents(tp, ip, whichfork)))
3964 xfs_inode_t *ip, /* incore inode */
3977 if (XFS_IFORK_FORMAT(ip, whichfork) != XFS_DINODE_FMT_BTREE &&
3978 XFS_IFORK_FORMAT(ip, whichfork) != XFS_DINODE_FMT_EXTENTS &&
3979 XFS_IFORK_FORMAT(ip, whichfork) != XFS_DINODE_FMT_LOCAL)
3981 if (XFS_IFORK_FORMAT(ip, whichfork) == XFS_DINODE_FMT_LOCAL) {
3985 ifp = XFS_IFORK_PTR(ip, whichfork);
3987 (error = xfs_iread_extents(tp, ip, whichfork)))
3990 ep = xfs_bmap_search_extents(ip, bno, whichfork, &eof, &lastx, &got,
4012 xfs_inode_t *ip, /* incore inode */
4021 if (XFS_IFORK_FORMAT(ip, whichfork) != XFS_DINODE_FMT_BTREE &&
4022 XFS_IFORK_FORMAT(ip, whichfork) != XFS_DINODE_FMT_EXTENTS &&
4023 XFS_IFORK_FORMAT(ip, whichfork) != XFS_DINODE_FMT_LOCAL)
4025 if (XFS_IFORK_FORMAT(ip, whichfork) == XFS_DINODE_FMT_LOCAL) {
4029 ifp = XFS_IFORK_PTR(ip, whichfork);
4031 (error = xfs_iread_extents(tp, ip, whichfork)))
4050 xfs_inode_t *ip, /* incore inode */
4060 return ((ip->i_d.di_mode & S_IFMT) == S_IFREG) ?
4061 (ip->i_size == ip->i_mount->m_sb.sb_blocksize) :
4062 (ip->i_d.di_size == ip->i_mount->m_sb.sb_blocksize);
4065 if (XFS_IFORK_NEXTENTS(ip, whichfork) != 1)
4067 if (XFS_IFORK_FORMAT(ip, whichfork) != XFS_DINODE_FMT_EXTENTS)
4069 ifp = XFS_IFORK_PTR(ip, whichfork);
4075 ASSERT(ip->i_size == ip->i_mount->m_sb.sb_blocksize);
4104 xfs_inode_t *ip, /* incore inode */
4121 mp = ip->i_mount;
4122 ifp = XFS_IFORK_PTR(ip, whichfork);
4124 XFS_EXTFMT_INODE(ip);
4173 xfs_fs_repair_cmn_err(CE_WARN, ip->i_mount,
4175 (unsigned long long) ip->i_ino);
4178 ip->i_mount);
4210 ip->i_mount);
4227 ASSERT(i == XFS_IFORK_NEXTENTS(ip, whichfork));
4228 XFS_BMAP_TRACE_EXLIST(ip, i, whichfork);
4241 xfs_inode_t *ip, /* incore inode pointer */
4253 ifp = XFS_IFORK_PTR(ip, whichfork);
4256 trace_xfs_extlist(ip, idx, whichfork, caller_ip);
4319 xfs_inode_t *ip, /* incore inode */
4375 mp = ip->i_mount;
4377 (XFS_IFORK_FORMAT(ip, whichfork) != XFS_DINODE_FMT_EXTENTS &&
4378 XFS_IFORK_FORMAT(ip, whichfork) != XFS_DINODE_FMT_BTREE &&
4379 XFS_IFORK_FORMAT(ip, whichfork) != XFS_DINODE_FMT_LOCAL),
4386 rt = (whichfork == XFS_DATA_FORK) && XFS_IS_REALTIME_INODE(ip);
4387 ifp = XFS_IFORK_PTR(ip, whichfork);
4389 XFS_IFORK_SIZE(ip, whichfork) / (uint)sizeof(xfs_bmbt_rec_t));
4417 if (XFS_IFORK_FORMAT(ip, whichfork) == XFS_DINODE_FMT_LOCAL) {
4419 if ((error = xfs_bmap_local_to_extents(tp, ip,
4424 if (XFS_IFORK_FORMAT(ip, whichfork) == XFS_DINODE_FMT_BTREE)
4431 (error = xfs_iread_extents(tp, ip, whichfork)))
4433 ep = xfs_bmap_search_extents(ip, bno, whichfork, &eof, &lastx, &got,
4439 bma.ip = NULL;
4482 extsz = xfs_get_extsz_hint(ip);
4503 NULL, ip, (long)alen, 0,
4520 xfs_bmap_worst_indlen(ip, alen);
4556 NULL, ip,
4563 ip->i_delayed_blks += alen;
4570 if (bma.ip == NULL) {
4572 bma.ip = ip;
4606 if ((error = xfs_bmap_isaeof(ip, aoff,
4638 ip, whichfork);
4665 error = xfs_bmap_add_extent(ip, lastx, &cur, &got,
4755 tp, ip, whichfork);
4761 error = xfs_bmap_add_extent(ip, lastx, &cur, mval,
4838 if (tp && XFS_IFORK_FORMAT(ip, whichfork) == XFS_DINODE_FMT_BTREE &&
4839 XFS_IFORK_NEXTENTS(ip, whichfork) <= ifp->if_ext_max) {
4841 error = xfs_bmap_btree_to_extents(tp, ip, cur,
4848 XFS_IFORK_SIZE(ip, whichfork) / (uint)sizeof(xfs_bmbt_rec_t));
4849 ASSERT(XFS_IFORK_FORMAT(ip, whichfork) != XFS_DINODE_FMT_BTREE ||
4850 XFS_IFORK_NEXTENTS(ip, whichfork) > ifp->if_ext_max);
4858 XFS_IFORK_FORMAT(ip, whichfork) != XFS_DINODE_FMT_EXTENTS)
4861 XFS_IFORK_FORMAT(ip, whichfork) != XFS_DINODE_FMT_BTREE)
4870 xfs_trans_log_inode(tp, ip, logflags);
4903 xfs_inode_t *ip, /* incore inode */
4915 ifp = XFS_IFORK_PTR(ip, whichfork);
4917 XFS_IFORK_FORMAT(ip, whichfork) != XFS_DINODE_FMT_BTREE &&
4918 XFS_IFORK_FORMAT(ip, whichfork) != XFS_DINODE_FMT_EXTENTS)) {
4920 ip->i_mount);
4923 if (XFS_FORCED_SHUTDOWN(ip->i_mount))
4927 (error = xfs_iread_extents(tp, ip, whichfork)))
4929 (void)xfs_bmap_search_extents(ip, bno, whichfork, &eof, &lastx, &got,
4955 struct xfs_inode *ip, /* incore inode */
4987 trace_xfs_bunmap(ip, bno, len, flags, _RET_IP_);
4991 ifp = XFS_IFORK_PTR(ip, whichfork);
4993 XFS_IFORK_FORMAT(ip, whichfork) != XFS_DINODE_FMT_EXTENTS &&
4994 XFS_IFORK_FORMAT(ip, whichfork) != XFS_DINODE_FMT_BTREE)) {
4996 ip->i_mount);
4999 mp = ip->i_mount;
5006 XFS_IFORK_SIZE(ip, whichfork) / (uint)sizeof(xfs_bmbt_rec_t));
5008 (error = xfs_iread_extents(tp, ip, whichfork)))
5016 isrt = (whichfork == XFS_DATA_FORK) && XFS_IS_REALTIME_INODE(ip);
5019 ep = xfs_bmap_search_extents(ip, bno, whichfork, &eof, &lastx, &got,
5033 ASSERT(XFS_IFORK_FORMAT(ip, whichfork) == XFS_DINODE_FMT_BTREE);
5034 cur = xfs_bmbt_init_cursor(mp, tp, ip, whichfork);
5118 error = xfs_bmap_add_extent(ip, lastx, &cur, &del,
5172 error = xfs_bmap_add_extent(ip, lastx - 1, &cur,
5181 error = xfs_bmap_add_extent(ip, lastx, &cur,
5200 ip, -((long)del.br_blockcount), 0,
5206 ip, -((long)del.br_blockcount), 0,
5209 ip->i_delayed_blks -= del.br_blockcount;
5227 XFS_IFORK_FORMAT(ip, whichfork) == XFS_DINODE_FMT_EXTENTS &&
5228 XFS_IFORK_NEXTENTS(ip, whichfork) >= ifp->if_ext_max &&
5235 error = xfs_bmap_del_extent(ip, tp, lastx, flist, cur, &del,
5249 if (lastx >= XFS_IFORK_NEXTENTS(ip, whichfork) ||
5262 XFS_IFORK_SIZE(ip, whichfork) / (uint)sizeof(xfs_bmbt_rec_t));
5266 if (XFS_IFORK_FORMAT(ip, whichfork) == XFS_DINODE_FMT_EXTENTS &&
5267 XFS_IFORK_NEXTENTS(ip, whichfork) > ifp->if_ext_max) {
5269 error = xfs_bmap_extents_to_btree(tp, ip, firstblock, flist,
5278 else if (XFS_IFORK_FORMAT(ip, whichfork) == XFS_DINODE_FMT_BTREE &&
5279 XFS_IFORK_NEXTENTS(ip, whichfork) <= ifp->if_ext_max) {
5281 error = xfs_bmap_btree_to_extents(tp, ip, cur, &tmp_logflags,
5291 XFS_IFORK_SIZE(ip, whichfork) / (uint)sizeof(xfs_bmbt_rec_t));
5299 XFS_IFORK_FORMAT(ip, whichfork) != XFS_DINODE_FMT_EXTENTS)
5302 XFS_IFORK_FORMAT(ip, whichfork) != XFS_DINODE_FMT_BTREE)
5309 xfs_trans_log_inode(tp, ip, logflags);
5326 xfs_inode_t *ip, /* xfs incore inode pointer */
5340 mp = ip->i_mount;
5342 fixlen = XFS_FSB_TO_BB(mp, XFS_B_TO_FSB(mp, ip->i_size));
5354 out->bmv_block = xfs_fsb_to_db(ip, startblock);
5355 fileblock = XFS_BB_TO_FSB(ip->i_mount, out->bmv_offset);
5356 ifp = XFS_IFORK_PTR(ip, XFS_DATA_FORK);
5374 xfs_inode_t *ip,
5398 mp = ip->i_mount;
5403 if (XFS_IFORK_Q(ip)) {
5404 if (ip->i_d.di_aformat != XFS_DINODE_FMT_EXTENTS &&
5405 ip->i_d.di_aformat != XFS_DINODE_FMT_BTREE &&
5406 ip->i_d.di_aformat != XFS_DINODE_FMT_LOCAL)
5409 ip->i_d.di_aformat != 0 &&
5410 ip->i_d.di_aformat != XFS_DINODE_FMT_EXTENTS)) {
5412 ip->i_mount);
5419 if (ip->i_d.di_format != XFS_DINODE_FMT_EXTENTS &&
5420 ip->i_d.di_format != XFS_DINODE_FMT_BTREE &&
5421 ip->i_d.di_format != XFS_DINODE_FMT_LOCAL)
5424 if (xfs_get_extsz_hint(ip) ||
5425 ip->i_d.di_flags & (XFS_DIFLAG_PREALLOC|XFS_DIFLAG_APPEND)){
5430 fixlen = ip->i_size;
5457 xfs_ilock(ip, XFS_IOLOCK_SHARED);
5459 if (ip->i_delayed_blks || ip->i_size > ip->i_d.di_size) {
5460 error = xfs_flush_pages(ip, 0, -1, 0, FI_REMAPF);
5465 ASSERT(ip->i_delayed_blks == 0);
5468 lock = xfs_ilock_map_shared(ip);
5474 if (nex > XFS_IFORK_NEXTENTS(ip, whichfork) * 2 + 1)
5475 nex = XFS_IFORK_NEXTENTS(ip, whichfork) * 2 + 1;
5492 if (XFS_IFORK_NEXTENTS(ip, whichfork) == 0 &&
5502 error = xfs_bmapi(NULL, ip, XFS_BB_TO_FSBT(mp, bmv->bmv_offset),
5531 if (!xfs_getbmapx_fix_eof_hole(ip, &out[cur_ext],
5562 xfs_iunlock_map_shared(ip, lock);
5564 xfs_iunlock(ip, XFS_IOLOCK_SHARED);
5587 xfs_inode_t *ip, /* incore inode pointer */
5599 ifp = XFS_IFORK_PTR(ip, whichfork);
5601 (error = xfs_iread_extents(NULL, ip, whichfork)))
5630 xfs_inode_t *ip, /* incore inode pointer */
5643 ifp = XFS_IFORK_PTR(ip, whichfork);
5645 (error = xfs_iread_extents(NULL, ip, whichfork)))
5742 * Check that the extents for the inode ip are in the right order in all
5749 xfs_inode_t *ip, /* incore inode pointer */
5766 if (XFS_IFORK_FORMAT(ip, whichfork) != XFS_DINODE_FMT_BTREE) {
5771 mp = ip->i_mount;
5772 ifp = XFS_IFORK_PTR(ip, whichfork);
5913 xfs_inode_t *ip, /* incore inode */
5925 mp = ip->i_mount;
5926 ifp = XFS_IFORK_PTR(ip, whichfork);
5927 if ( XFS_IFORK_FORMAT(ip, whichfork) == XFS_DINODE_FMT_EXTENTS ) {