Lines Matching refs:bma

1607 	struct xfs_bmalloca	*bma,  in xfs_bmap_isaeof()  argument
1614 bma->aeof = 0; in xfs_bmap_isaeof()
1615 error = xfs_bmap_last_extent(NULL, bma->ip, whichfork, &rec, in xfs_bmap_isaeof()
1621 bma->aeof = 1; in xfs_bmap_isaeof()
1629 bma->aeof = bma->offset >= rec.br_startoff + rec.br_blockcount || in xfs_bmap_isaeof()
1630 (bma->offset >= rec.br_startoff && in xfs_bmap_isaeof()
1709 struct xfs_bmalloca *bma) in xfs_bmap_add_extent_delay_real() argument
1711 struct xfs_bmbt_irec *new = &bma->got; in xfs_bmap_add_extent_delay_real()
1729 mp = bma->tp ? bma->tp->t_mountp : NULL; in xfs_bmap_add_extent_delay_real()
1730 ifp = XFS_IFORK_PTR(bma->ip, XFS_DATA_FORK); in xfs_bmap_add_extent_delay_real()
1732 ASSERT(bma->idx >= 0); in xfs_bmap_add_extent_delay_real()
1733 ASSERT(bma->idx <= ifp->if_bytes / sizeof(struct xfs_bmbt_rec)); in xfs_bmap_add_extent_delay_real()
1735 ASSERT(!bma->cur || in xfs_bmap_add_extent_delay_real()
1736 (bma->cur->bc_private.b.flags & XFS_BTCUR_BPRV_WASDEL)); in xfs_bmap_add_extent_delay_real()
1747 ep = xfs_iext_get_ext(ifp, bma->idx); in xfs_bmap_add_extent_delay_real()
1769 if (bma->idx > 0) { in xfs_bmap_add_extent_delay_real()
1771 xfs_bmbt_get_all(xfs_iext_get_ext(ifp, bma->idx - 1), &LEFT); in xfs_bmap_add_extent_delay_real()
1789 if (bma->idx < bma->ip->i_df.if_bytes / (uint)sizeof(xfs_bmbt_rec_t) - 1) { in xfs_bmap_add_extent_delay_real()
1791 xfs_bmbt_get_all(xfs_iext_get_ext(ifp, bma->idx + 1), &RIGHT); in xfs_bmap_add_extent_delay_real()
1822 bma->idx--; in xfs_bmap_add_extent_delay_real()
1823 trace_xfs_bmap_pre_update(bma->ip, bma->idx, state, _THIS_IP_); in xfs_bmap_add_extent_delay_real()
1824 xfs_bmbt_set_blockcount(xfs_iext_get_ext(ifp, bma->idx), in xfs_bmap_add_extent_delay_real()
1827 trace_xfs_bmap_post_update(bma->ip, bma->idx, state, _THIS_IP_); in xfs_bmap_add_extent_delay_real()
1829 xfs_iext_remove(bma->ip, bma->idx + 1, 2, state); in xfs_bmap_add_extent_delay_real()
1830 bma->ip->i_d.di_nextents--; in xfs_bmap_add_extent_delay_real()
1831 if (bma->cur == NULL) in xfs_bmap_add_extent_delay_real()
1835 error = xfs_bmbt_lookup_eq(bma->cur, RIGHT.br_startoff, in xfs_bmap_add_extent_delay_real()
1841 error = xfs_btree_delete(bma->cur, &i); in xfs_bmap_add_extent_delay_real()
1845 error = xfs_btree_decrement(bma->cur, 0, &i); in xfs_bmap_add_extent_delay_real()
1849 error = xfs_bmbt_update(bma->cur, LEFT.br_startoff, in xfs_bmap_add_extent_delay_real()
1864 bma->idx--; in xfs_bmap_add_extent_delay_real()
1866 trace_xfs_bmap_pre_update(bma->ip, bma->idx, state, _THIS_IP_); in xfs_bmap_add_extent_delay_real()
1867 xfs_bmbt_set_blockcount(xfs_iext_get_ext(ifp, bma->idx), in xfs_bmap_add_extent_delay_real()
1869 trace_xfs_bmap_post_update(bma->ip, bma->idx, state, _THIS_IP_); in xfs_bmap_add_extent_delay_real()
1871 xfs_iext_remove(bma->ip, bma->idx + 1, 1, state); in xfs_bmap_add_extent_delay_real()
1872 if (bma->cur == NULL) in xfs_bmap_add_extent_delay_real()
1876 error = xfs_bmbt_lookup_eq(bma->cur, LEFT.br_startoff, in xfs_bmap_add_extent_delay_real()
1882 error = xfs_bmbt_update(bma->cur, LEFT.br_startoff, in xfs_bmap_add_extent_delay_real()
1896 trace_xfs_bmap_pre_update(bma->ip, bma->idx, state, _THIS_IP_); in xfs_bmap_add_extent_delay_real()
1900 trace_xfs_bmap_post_update(bma->ip, bma->idx, state, _THIS_IP_); in xfs_bmap_add_extent_delay_real()
1902 xfs_iext_remove(bma->ip, bma->idx + 1, 1, state); in xfs_bmap_add_extent_delay_real()
1903 if (bma->cur == NULL) in xfs_bmap_add_extent_delay_real()
1907 error = xfs_bmbt_lookup_eq(bma->cur, RIGHT.br_startoff, in xfs_bmap_add_extent_delay_real()
1913 error = xfs_bmbt_update(bma->cur, PREV.br_startoff, in xfs_bmap_add_extent_delay_real()
1928 trace_xfs_bmap_pre_update(bma->ip, bma->idx, state, _THIS_IP_); in xfs_bmap_add_extent_delay_real()
1930 trace_xfs_bmap_post_update(bma->ip, bma->idx, state, _THIS_IP_); in xfs_bmap_add_extent_delay_real()
1932 bma->ip->i_d.di_nextents++; in xfs_bmap_add_extent_delay_real()
1933 if (bma->cur == NULL) in xfs_bmap_add_extent_delay_real()
1937 error = xfs_bmbt_lookup_eq(bma->cur, new->br_startoff, in xfs_bmap_add_extent_delay_real()
1943 bma->cur->bc_rec.b.br_state = XFS_EXT_NORM; in xfs_bmap_add_extent_delay_real()
1944 error = xfs_btree_insert(bma->cur, &i); in xfs_bmap_add_extent_delay_real()
1956 trace_xfs_bmap_pre_update(bma->ip, bma->idx - 1, state, _THIS_IP_); in xfs_bmap_add_extent_delay_real()
1957 xfs_bmbt_set_blockcount(xfs_iext_get_ext(ifp, bma->idx - 1), in xfs_bmap_add_extent_delay_real()
1961 trace_xfs_bmap_post_update(bma->ip, bma->idx - 1, state, _THIS_IP_); in xfs_bmap_add_extent_delay_real()
1964 trace_xfs_bmap_pre_update(bma->ip, bma->idx, state, _THIS_IP_); in xfs_bmap_add_extent_delay_real()
1966 if (bma->cur == NULL) in xfs_bmap_add_extent_delay_real()
1970 error = xfs_bmbt_lookup_eq(bma->cur, LEFT.br_startoff, in xfs_bmap_add_extent_delay_real()
1976 error = xfs_bmbt_update(bma->cur, LEFT.br_startoff, in xfs_bmap_add_extent_delay_real()
1984 da_new = XFS_FILBLKS_MIN(xfs_bmap_worst_indlen(bma->ip, temp), in xfs_bmap_add_extent_delay_real()
1987 trace_xfs_bmap_post_update(bma->ip, bma->idx, state, _THIS_IP_); in xfs_bmap_add_extent_delay_real()
1989 bma->idx--; in xfs_bmap_add_extent_delay_real()
1997 trace_xfs_bmap_pre_update(bma->ip, bma->idx, state, _THIS_IP_); in xfs_bmap_add_extent_delay_real()
2001 xfs_iext_insert(bma->ip, bma->idx, 1, new, state); in xfs_bmap_add_extent_delay_real()
2002 bma->ip->i_d.di_nextents++; in xfs_bmap_add_extent_delay_real()
2003 if (bma->cur == NULL) in xfs_bmap_add_extent_delay_real()
2007 error = xfs_bmbt_lookup_eq(bma->cur, new->br_startoff, in xfs_bmap_add_extent_delay_real()
2013 bma->cur->bc_rec.b.br_state = XFS_EXT_NORM; in xfs_bmap_add_extent_delay_real()
2014 error = xfs_btree_insert(bma->cur, &i); in xfs_bmap_add_extent_delay_real()
2020 if (xfs_bmap_needs_btree(bma->ip, XFS_DATA_FORK)) { in xfs_bmap_add_extent_delay_real()
2021 error = xfs_bmap_extents_to_btree(bma->tp, bma->ip, in xfs_bmap_add_extent_delay_real()
2022 bma->firstblock, bma->flist, in xfs_bmap_add_extent_delay_real()
2023 &bma->cur, 1, &tmp_rval, XFS_DATA_FORK); in xfs_bmap_add_extent_delay_real()
2028 da_new = XFS_FILBLKS_MIN(xfs_bmap_worst_indlen(bma->ip, temp), in xfs_bmap_add_extent_delay_real()
2030 (bma->cur ? bma->cur->bc_private.b.allocated : 0)); in xfs_bmap_add_extent_delay_real()
2031 ep = xfs_iext_get_ext(ifp, bma->idx + 1); in xfs_bmap_add_extent_delay_real()
2033 trace_xfs_bmap_post_update(bma->ip, bma->idx + 1, state, _THIS_IP_); in xfs_bmap_add_extent_delay_real()
2042 trace_xfs_bmap_pre_update(bma->ip, bma->idx + 1, state, _THIS_IP_); in xfs_bmap_add_extent_delay_real()
2044 xfs_bmbt_set_allf(xfs_iext_get_ext(ifp, bma->idx + 1), in xfs_bmap_add_extent_delay_real()
2048 trace_xfs_bmap_post_update(bma->ip, bma->idx + 1, state, _THIS_IP_); in xfs_bmap_add_extent_delay_real()
2049 if (bma->cur == NULL) in xfs_bmap_add_extent_delay_real()
2053 error = xfs_bmbt_lookup_eq(bma->cur, RIGHT.br_startoff, in xfs_bmap_add_extent_delay_real()
2059 error = xfs_bmbt_update(bma->cur, new->br_startoff, in xfs_bmap_add_extent_delay_real()
2068 da_new = XFS_FILBLKS_MIN(xfs_bmap_worst_indlen(bma->ip, temp), in xfs_bmap_add_extent_delay_real()
2070 trace_xfs_bmap_pre_update(bma->ip, bma->idx, state, _THIS_IP_); in xfs_bmap_add_extent_delay_real()
2072 trace_xfs_bmap_post_update(bma->ip, bma->idx, state, _THIS_IP_); in xfs_bmap_add_extent_delay_real()
2074 bma->idx++; in xfs_bmap_add_extent_delay_real()
2083 trace_xfs_bmap_pre_update(bma->ip, bma->idx, state, _THIS_IP_); in xfs_bmap_add_extent_delay_real()
2085 xfs_iext_insert(bma->ip, bma->idx + 1, 1, new, state); in xfs_bmap_add_extent_delay_real()
2086 bma->ip->i_d.di_nextents++; in xfs_bmap_add_extent_delay_real()
2087 if (bma->cur == NULL) in xfs_bmap_add_extent_delay_real()
2091 error = xfs_bmbt_lookup_eq(bma->cur, new->br_startoff, in xfs_bmap_add_extent_delay_real()
2097 bma->cur->bc_rec.b.br_state = XFS_EXT_NORM; in xfs_bmap_add_extent_delay_real()
2098 error = xfs_btree_insert(bma->cur, &i); in xfs_bmap_add_extent_delay_real()
2104 if (xfs_bmap_needs_btree(bma->ip, XFS_DATA_FORK)) { in xfs_bmap_add_extent_delay_real()
2105 error = xfs_bmap_extents_to_btree(bma->tp, bma->ip, in xfs_bmap_add_extent_delay_real()
2106 bma->firstblock, bma->flist, &bma->cur, 1, in xfs_bmap_add_extent_delay_real()
2112 da_new = XFS_FILBLKS_MIN(xfs_bmap_worst_indlen(bma->ip, temp), in xfs_bmap_add_extent_delay_real()
2114 (bma->cur ? bma->cur->bc_private.b.allocated : 0)); in xfs_bmap_add_extent_delay_real()
2115 ep = xfs_iext_get_ext(ifp, bma->idx); in xfs_bmap_add_extent_delay_real()
2117 trace_xfs_bmap_post_update(bma->ip, bma->idx, state, _THIS_IP_); in xfs_bmap_add_extent_delay_real()
2119 bma->idx++; in xfs_bmap_add_extent_delay_real()
2145 trace_xfs_bmap_pre_update(bma->ip, bma->idx, 0, _THIS_IP_); in xfs_bmap_add_extent_delay_real()
2150 (int)xfs_bmap_worst_indlen(bma->ip, temp2)); in xfs_bmap_add_extent_delay_real()
2154 xfs_iext_insert(bma->ip, bma->idx + 1, 2, &LEFT, state); in xfs_bmap_add_extent_delay_real()
2155 bma->ip->i_d.di_nextents++; in xfs_bmap_add_extent_delay_real()
2156 if (bma->cur == NULL) in xfs_bmap_add_extent_delay_real()
2160 error = xfs_bmbt_lookup_eq(bma->cur, new->br_startoff, in xfs_bmap_add_extent_delay_real()
2166 bma->cur->bc_rec.b.br_state = XFS_EXT_NORM; in xfs_bmap_add_extent_delay_real()
2167 error = xfs_btree_insert(bma->cur, &i); in xfs_bmap_add_extent_delay_real()
2173 if (xfs_bmap_needs_btree(bma->ip, XFS_DATA_FORK)) { in xfs_bmap_add_extent_delay_real()
2174 error = xfs_bmap_extents_to_btree(bma->tp, bma->ip, in xfs_bmap_add_extent_delay_real()
2175 bma->firstblock, bma->flist, &bma->cur, in xfs_bmap_add_extent_delay_real()
2181 temp = xfs_bmap_worst_indlen(bma->ip, temp); in xfs_bmap_add_extent_delay_real()
2182 temp2 = xfs_bmap_worst_indlen(bma->ip, temp2); in xfs_bmap_add_extent_delay_real()
2184 (bma->cur ? bma->cur->bc_private.b.allocated : 0)); in xfs_bmap_add_extent_delay_real()
2186 error = xfs_mod_fdblocks(bma->ip->i_mount, in xfs_bmap_add_extent_delay_real()
2193 ep = xfs_iext_get_ext(ifp, bma->idx); in xfs_bmap_add_extent_delay_real()
2195 trace_xfs_bmap_post_update(bma->ip, bma->idx, state, _THIS_IP_); in xfs_bmap_add_extent_delay_real()
2196 trace_xfs_bmap_pre_update(bma->ip, bma->idx + 2, state, _THIS_IP_); in xfs_bmap_add_extent_delay_real()
2197 xfs_bmbt_set_startblock(xfs_iext_get_ext(ifp, bma->idx + 2), in xfs_bmap_add_extent_delay_real()
2199 trace_xfs_bmap_post_update(bma->ip, bma->idx + 2, state, _THIS_IP_); in xfs_bmap_add_extent_delay_real()
2201 bma->idx++; in xfs_bmap_add_extent_delay_real()
2219 if (xfs_bmap_needs_btree(bma->ip, XFS_DATA_FORK)) { in xfs_bmap_add_extent_delay_real()
2222 ASSERT(bma->cur == NULL); in xfs_bmap_add_extent_delay_real()
2223 error = xfs_bmap_extents_to_btree(bma->tp, bma->ip, in xfs_bmap_add_extent_delay_real()
2224 bma->firstblock, bma->flist, &bma->cur, in xfs_bmap_add_extent_delay_real()
2226 bma->logflags |= tmp_logflags; in xfs_bmap_add_extent_delay_real()
2234 if (bma->cur) in xfs_bmap_add_extent_delay_real()
2235 temp += bma->cur->bc_private.b.allocated; in xfs_bmap_add_extent_delay_real()
2238 xfs_mod_fdblocks(bma->ip->i_mount, in xfs_bmap_add_extent_delay_real()
2243 if (bma->cur) in xfs_bmap_add_extent_delay_real()
2244 bma->cur->bc_private.b.allocated = 0; in xfs_bmap_add_extent_delay_real()
2246 xfs_bmap_check_leaf_extents(bma->cur, bma->ip, XFS_DATA_FORK); in xfs_bmap_add_extent_delay_real()
2248 bma->logflags |= rval; in xfs_bmap_add_extent_delay_real()
2930 struct xfs_bmalloca *bma, in xfs_bmap_add_extent_hole_real() argument
2933 struct xfs_bmbt_irec *new = &bma->got; in xfs_bmap_add_extent_hole_real()
2943 mp = bma->tp ? bma->tp->t_mountp : NULL; in xfs_bmap_add_extent_hole_real()
2944 ifp = XFS_IFORK_PTR(bma->ip, whichfork); in xfs_bmap_add_extent_hole_real()
2946 ASSERT(bma->idx >= 0); in xfs_bmap_add_extent_hole_real()
2947 ASSERT(bma->idx <= ifp->if_bytes / sizeof(struct xfs_bmbt_rec)); in xfs_bmap_add_extent_hole_real()
2949 ASSERT(!bma->cur || in xfs_bmap_add_extent_hole_real()
2950 !(bma->cur->bc_private.b.flags & XFS_BTCUR_BPRV_WASDEL)); in xfs_bmap_add_extent_hole_real()
2961 if (bma->idx > 0) { in xfs_bmap_add_extent_hole_real()
2963 xfs_bmbt_get_all(xfs_iext_get_ext(ifp, bma->idx - 1), &left); in xfs_bmap_add_extent_hole_real()
2972 if (bma->idx < ifp->if_bytes / (uint)sizeof(xfs_bmbt_rec_t)) { in xfs_bmap_add_extent_hole_real()
2974 xfs_bmbt_get_all(xfs_iext_get_ext(ifp, bma->idx), &right); in xfs_bmap_add_extent_hole_real()
3011 --bma->idx; in xfs_bmap_add_extent_hole_real()
3012 trace_xfs_bmap_pre_update(bma->ip, bma->idx, state, _THIS_IP_); in xfs_bmap_add_extent_hole_real()
3013 xfs_bmbt_set_blockcount(xfs_iext_get_ext(ifp, bma->idx), in xfs_bmap_add_extent_hole_real()
3016 trace_xfs_bmap_post_update(bma->ip, bma->idx, state, _THIS_IP_); in xfs_bmap_add_extent_hole_real()
3018 xfs_iext_remove(bma->ip, bma->idx + 1, 1, state); in xfs_bmap_add_extent_hole_real()
3020 XFS_IFORK_NEXT_SET(bma->ip, whichfork, in xfs_bmap_add_extent_hole_real()
3021 XFS_IFORK_NEXTENTS(bma->ip, whichfork) - 1); in xfs_bmap_add_extent_hole_real()
3022 if (bma->cur == NULL) { in xfs_bmap_add_extent_hole_real()
3026 error = xfs_bmbt_lookup_eq(bma->cur, right.br_startoff, in xfs_bmap_add_extent_hole_real()
3032 error = xfs_btree_delete(bma->cur, &i); in xfs_bmap_add_extent_hole_real()
3036 error = xfs_btree_decrement(bma->cur, 0, &i); in xfs_bmap_add_extent_hole_real()
3040 error = xfs_bmbt_update(bma->cur, left.br_startoff, in xfs_bmap_add_extent_hole_real()
3057 --bma->idx; in xfs_bmap_add_extent_hole_real()
3058 trace_xfs_bmap_pre_update(bma->ip, bma->idx, state, _THIS_IP_); in xfs_bmap_add_extent_hole_real()
3059 xfs_bmbt_set_blockcount(xfs_iext_get_ext(ifp, bma->idx), in xfs_bmap_add_extent_hole_real()
3061 trace_xfs_bmap_post_update(bma->ip, bma->idx, state, _THIS_IP_); in xfs_bmap_add_extent_hole_real()
3063 if (bma->cur == NULL) { in xfs_bmap_add_extent_hole_real()
3067 error = xfs_bmbt_lookup_eq(bma->cur, left.br_startoff, in xfs_bmap_add_extent_hole_real()
3073 error = xfs_bmbt_update(bma->cur, left.br_startoff, in xfs_bmap_add_extent_hole_real()
3089 trace_xfs_bmap_pre_update(bma->ip, bma->idx, state, _THIS_IP_); in xfs_bmap_add_extent_hole_real()
3090 xfs_bmbt_set_allf(xfs_iext_get_ext(ifp, bma->idx), in xfs_bmap_add_extent_hole_real()
3094 trace_xfs_bmap_post_update(bma->ip, bma->idx, state, _THIS_IP_); in xfs_bmap_add_extent_hole_real()
3096 if (bma->cur == NULL) { in xfs_bmap_add_extent_hole_real()
3100 error = xfs_bmbt_lookup_eq(bma->cur, in xfs_bmap_add_extent_hole_real()
3107 error = xfs_bmbt_update(bma->cur, new->br_startoff, in xfs_bmap_add_extent_hole_real()
3123 xfs_iext_insert(bma->ip, bma->idx, 1, new, state); in xfs_bmap_add_extent_hole_real()
3124 XFS_IFORK_NEXT_SET(bma->ip, whichfork, in xfs_bmap_add_extent_hole_real()
3125 XFS_IFORK_NEXTENTS(bma->ip, whichfork) + 1); in xfs_bmap_add_extent_hole_real()
3126 if (bma->cur == NULL) { in xfs_bmap_add_extent_hole_real()
3130 error = xfs_bmbt_lookup_eq(bma->cur, in xfs_bmap_add_extent_hole_real()
3137 bma->cur->bc_rec.b.br_state = new->br_state; in xfs_bmap_add_extent_hole_real()
3138 error = xfs_btree_insert(bma->cur, &i); in xfs_bmap_add_extent_hole_real()
3147 if (xfs_bmap_needs_btree(bma->ip, whichfork)) { in xfs_bmap_add_extent_hole_real()
3150 ASSERT(bma->cur == NULL); in xfs_bmap_add_extent_hole_real()
3151 error = xfs_bmap_extents_to_btree(bma->tp, bma->ip, in xfs_bmap_add_extent_hole_real()
3152 bma->firstblock, bma->flist, &bma->cur, in xfs_bmap_add_extent_hole_real()
3154 bma->logflags |= tmp_logflags; in xfs_bmap_add_extent_hole_real()
3160 if (bma->cur) in xfs_bmap_add_extent_hole_real()
3161 bma->cur->bc_private.b.allocated = 0; in xfs_bmap_add_extent_hole_real()
3163 xfs_bmap_check_leaf_extents(bma->cur, bma->ip, whichfork); in xfs_bmap_add_extent_hole_real()
3165 bma->logflags |= rval; in xfs_bmap_add_extent_hole_real()
4274 struct xfs_bmalloca *bma) in xfs_bmapi_allocate() argument
4276 struct xfs_mount *mp = bma->ip->i_mount; in xfs_bmapi_allocate()
4277 int whichfork = (bma->flags & XFS_BMAPI_ATTRFORK) ? in xfs_bmapi_allocate()
4279 struct xfs_ifork *ifp = XFS_IFORK_PTR(bma->ip, whichfork); in xfs_bmapi_allocate()
4283 ASSERT(bma->length > 0); in xfs_bmapi_allocate()
4289 if (bma->wasdel) { in xfs_bmapi_allocate()
4290 bma->length = (xfs_extlen_t)bma->got.br_blockcount; in xfs_bmapi_allocate()
4291 bma->offset = bma->got.br_startoff; in xfs_bmapi_allocate()
4292 if (bma->idx != NULLEXTNUM && bma->idx) { in xfs_bmapi_allocate()
4293 xfs_bmbt_get_all(xfs_iext_get_ext(ifp, bma->idx - 1), in xfs_bmapi_allocate()
4294 &bma->prev); in xfs_bmapi_allocate()
4297 bma->length = XFS_FILBLKS_MIN(bma->length, MAXEXTLEN); in xfs_bmapi_allocate()
4298 if (!bma->eof) in xfs_bmapi_allocate()
4299 bma->length = XFS_FILBLKS_MIN(bma->length, in xfs_bmapi_allocate()
4300 bma->got.br_startoff - bma->offset); in xfs_bmapi_allocate()
4307 if (!(bma->flags & XFS_BMAPI_METADATA)) { in xfs_bmapi_allocate()
4308 bma->userdata = (bma->offset == 0) ? in xfs_bmapi_allocate()
4312 bma->minlen = (bma->flags & XFS_BMAPI_CONTIG) ? bma->length : 1; in xfs_bmapi_allocate()
4318 if (mp->m_dalign && bma->length >= mp->m_dalign && in xfs_bmapi_allocate()
4319 !(bma->flags & XFS_BMAPI_METADATA) && whichfork == XFS_DATA_FORK) { in xfs_bmapi_allocate()
4320 error = xfs_bmap_isaeof(bma, whichfork); in xfs_bmapi_allocate()
4325 error = xfs_bmap_alloc(bma); in xfs_bmapi_allocate()
4329 if (bma->flist->xbf_low) in xfs_bmapi_allocate()
4330 bma->minleft = 0; in xfs_bmapi_allocate()
4331 if (bma->cur) in xfs_bmapi_allocate()
4332 bma->cur->bc_private.b.firstblock = *bma->firstblock; in xfs_bmapi_allocate()
4333 if (bma->blkno == NULLFSBLOCK) in xfs_bmapi_allocate()
4335 if ((ifp->if_flags & XFS_IFBROOT) && !bma->cur) { in xfs_bmapi_allocate()
4336 bma->cur = xfs_bmbt_init_cursor(mp, bma->tp, bma->ip, whichfork); in xfs_bmapi_allocate()
4337 bma->cur->bc_private.b.firstblock = *bma->firstblock; in xfs_bmapi_allocate()
4338 bma->cur->bc_private.b.flist = bma->flist; in xfs_bmapi_allocate()
4344 bma->nallocs++; in xfs_bmapi_allocate()
4346 if (bma->cur) in xfs_bmapi_allocate()
4347 bma->cur->bc_private.b.flags = in xfs_bmapi_allocate()
4348 bma->wasdel ? XFS_BTCUR_BPRV_WASDEL : 0; in xfs_bmapi_allocate()
4350 bma->got.br_startoff = bma->offset; in xfs_bmapi_allocate()
4351 bma->got.br_startblock = bma->blkno; in xfs_bmapi_allocate()
4352 bma->got.br_blockcount = bma->length; in xfs_bmapi_allocate()
4353 bma->got.br_state = XFS_EXT_NORM; in xfs_bmapi_allocate()
4359 if (!bma->wasdel && (bma->flags & XFS_BMAPI_PREALLOC) && in xfs_bmapi_allocate()
4361 bma->got.br_state = XFS_EXT_UNWRITTEN; in xfs_bmapi_allocate()
4363 if (bma->wasdel) in xfs_bmapi_allocate()
4364 error = xfs_bmap_add_extent_delay_real(bma); in xfs_bmapi_allocate()
4366 error = xfs_bmap_add_extent_hole_real(bma, whichfork); in xfs_bmapi_allocate()
4368 bma->logflags |= tmp_logflags; in xfs_bmapi_allocate()
4377 xfs_bmbt_get_all(xfs_iext_get_ext(ifp, bma->idx), &bma->got); in xfs_bmapi_allocate()
4379 ASSERT(bma->got.br_startoff <= bma->offset); in xfs_bmapi_allocate()
4380 ASSERT(bma->got.br_startoff + bma->got.br_blockcount >= in xfs_bmapi_allocate()
4381 bma->offset + bma->length); in xfs_bmapi_allocate()
4382 ASSERT(bma->got.br_state == XFS_EXT_NORM || in xfs_bmapi_allocate()
4383 bma->got.br_state == XFS_EXT_UNWRITTEN); in xfs_bmapi_allocate()
4389 struct xfs_bmalloca *bma, in xfs_bmapi_convert_unwritten() argument
4396 struct xfs_ifork *ifp = XFS_IFORK_PTR(bma->ip, whichfork); in xfs_bmapi_convert_unwritten()
4415 if ((ifp->if_flags & XFS_IFBROOT) && !bma->cur) { in xfs_bmapi_convert_unwritten()
4416 bma->cur = xfs_bmbt_init_cursor(bma->ip->i_mount, bma->tp, in xfs_bmapi_convert_unwritten()
4417 bma->ip, whichfork); in xfs_bmapi_convert_unwritten()
4418 bma->cur->bc_private.b.firstblock = *bma->firstblock; in xfs_bmapi_convert_unwritten()
4419 bma->cur->bc_private.b.flist = bma->flist; in xfs_bmapi_convert_unwritten()
4424 error = xfs_bmap_add_extent_unwritten_real(bma->tp, bma->ip, &bma->idx, in xfs_bmapi_convert_unwritten()
4425 &bma->cur, mval, bma->firstblock, bma->flist, in xfs_bmapi_convert_unwritten()
4427 bma->logflags |= tmp_logflags; in xfs_bmapi_convert_unwritten()
4436 xfs_bmbt_get_all(xfs_iext_get_ext(ifp, bma->idx), &bma->got); in xfs_bmapi_convert_unwritten()
4475 struct xfs_bmalloca bma = { NULL }; /* args for xfs_bmap_alloc */ in xfs_bmapi_write() local
4526 bma.minleft = be16_to_cpu(ifp->if_broot->bb_level) + 1; in xfs_bmapi_write()
4528 bma.minleft = 1; in xfs_bmapi_write()
4530 bma.minleft = 0; in xfs_bmapi_write()
4539 xfs_bmap_search_extents(ip, bno, whichfork, &eof, &bma.idx, &bma.got, in xfs_bmapi_write()
4540 &bma.prev); in xfs_bmapi_write()
4545 bma.tp = tp; in xfs_bmapi_write()
4546 bma.ip = ip; in xfs_bmapi_write()
4547 bma.total = total; in xfs_bmapi_write()
4548 bma.userdata = 0; in xfs_bmapi_write()
4549 bma.flist = flist; in xfs_bmapi_write()
4550 bma.firstblock = firstblock; in xfs_bmapi_write()
4553 inhole = eof || bma.got.br_startoff > bno; in xfs_bmapi_write()
4554 wasdelay = !inhole && isnullstartblock(bma.got.br_startblock); in xfs_bmapi_write()
4561 bma.eof = eof; in xfs_bmapi_write()
4562 bma.conv = !!(flags & XFS_BMAPI_CONVERT); in xfs_bmapi_write()
4563 bma.wasdel = wasdelay; in xfs_bmapi_write()
4564 bma.offset = bno; in xfs_bmapi_write()
4565 bma.flags = flags; in xfs_bmapi_write()
4575 bma.length = MAXEXTLEN; in xfs_bmapi_write()
4577 bma.length = len; in xfs_bmapi_write()
4580 ASSERT(bma.length > 0); in xfs_bmapi_write()
4581 error = xfs_bmapi_allocate(&bma); in xfs_bmapi_write()
4584 if (bma.blkno == NULLFSBLOCK) in xfs_bmapi_write()
4589 xfs_bmapi_trim_map(mval, &bma.got, &bno, len, obno, in xfs_bmapi_write()
4593 error = xfs_bmapi_convert_unwritten(&bma, mval, len, flags); in xfs_bmapi_write()
4607 if (bno >= end || n >= *nmap || bma.nallocs >= *nmap) in xfs_bmapi_write()
4611 bma.prev = bma.got; in xfs_bmapi_write()
4612 if (++bma.idx < ifp->if_bytes / sizeof(xfs_bmbt_rec_t)) { in xfs_bmapi_write()
4613 xfs_bmbt_get_all(xfs_iext_get_ext(ifp, bma.idx), in xfs_bmapi_write()
4614 &bma.got); in xfs_bmapi_write()
4626 ASSERT(bma.cur); in xfs_bmapi_write()
4627 error = xfs_bmap_btree_to_extents(tp, ip, bma.cur, in xfs_bmapi_write()
4629 bma.logflags |= tmp_logflags; in xfs_bmapi_write()
4643 if ((bma.logflags & xfs_ilog_fext(whichfork)) && in xfs_bmapi_write()
4645 bma.logflags &= ~xfs_ilog_fext(whichfork); in xfs_bmapi_write()
4646 else if ((bma.logflags & xfs_ilog_fbroot(whichfork)) && in xfs_bmapi_write()
4648 bma.logflags &= ~xfs_ilog_fbroot(whichfork); in xfs_bmapi_write()
4654 if (bma.logflags) in xfs_bmapi_write()
4655 xfs_trans_log_inode(tp, ip, bma.logflags); in xfs_bmapi_write()
4657 if (bma.cur) { in xfs_bmapi_write()
4662 bma.cur->bc_private.b.firstblock) || in xfs_bmapi_write()
4666 bma.cur->bc_private.b.firstblock))); in xfs_bmapi_write()
4667 *firstblock = bma.cur->bc_private.b.firstblock; in xfs_bmapi_write()
4669 xfs_btree_del_cursor(bma.cur, in xfs_bmapi_write()