Lines Matching refs:bma

1606 	struct xfs_bmalloca	*bma,  in xfs_bmap_isaeof()  argument
1613 bma->aeof = 0; in xfs_bmap_isaeof()
1614 error = xfs_bmap_last_extent(NULL, bma->ip, whichfork, &rec, in xfs_bmap_isaeof()
1620 bma->aeof = 1; in xfs_bmap_isaeof()
1628 bma->aeof = bma->offset >= rec.br_startoff + rec.br_blockcount || in xfs_bmap_isaeof()
1629 (bma->offset >= rec.br_startoff && in xfs_bmap_isaeof()
1708 struct xfs_bmalloca *bma) in xfs_bmap_add_extent_delay_real() argument
1710 struct xfs_bmbt_irec *new = &bma->got; in xfs_bmap_add_extent_delay_real()
1728 mp = bma->tp ? bma->tp->t_mountp : NULL; in xfs_bmap_add_extent_delay_real()
1729 ifp = XFS_IFORK_PTR(bma->ip, XFS_DATA_FORK); in xfs_bmap_add_extent_delay_real()
1731 ASSERT(bma->idx >= 0); in xfs_bmap_add_extent_delay_real()
1732 ASSERT(bma->idx <= ifp->if_bytes / sizeof(struct xfs_bmbt_rec)); in xfs_bmap_add_extent_delay_real()
1734 ASSERT(!bma->cur || in xfs_bmap_add_extent_delay_real()
1735 (bma->cur->bc_private.b.flags & XFS_BTCUR_BPRV_WASDEL)); in xfs_bmap_add_extent_delay_real()
1746 ep = xfs_iext_get_ext(ifp, bma->idx); in xfs_bmap_add_extent_delay_real()
1768 if (bma->idx > 0) { in xfs_bmap_add_extent_delay_real()
1770 xfs_bmbt_get_all(xfs_iext_get_ext(ifp, bma->idx - 1), &LEFT); in xfs_bmap_add_extent_delay_real()
1788 if (bma->idx < bma->ip->i_df.if_bytes / (uint)sizeof(xfs_bmbt_rec_t) - 1) { in xfs_bmap_add_extent_delay_real()
1790 xfs_bmbt_get_all(xfs_iext_get_ext(ifp, bma->idx + 1), &RIGHT); in xfs_bmap_add_extent_delay_real()
1821 bma->idx--; in xfs_bmap_add_extent_delay_real()
1822 trace_xfs_bmap_pre_update(bma->ip, bma->idx, state, _THIS_IP_); in xfs_bmap_add_extent_delay_real()
1823 xfs_bmbt_set_blockcount(xfs_iext_get_ext(ifp, bma->idx), in xfs_bmap_add_extent_delay_real()
1826 trace_xfs_bmap_post_update(bma->ip, bma->idx, state, _THIS_IP_); in xfs_bmap_add_extent_delay_real()
1828 xfs_iext_remove(bma->ip, bma->idx + 1, 2, state); in xfs_bmap_add_extent_delay_real()
1829 bma->ip->i_d.di_nextents--; in xfs_bmap_add_extent_delay_real()
1830 if (bma->cur == NULL) in xfs_bmap_add_extent_delay_real()
1834 error = xfs_bmbt_lookup_eq(bma->cur, RIGHT.br_startoff, in xfs_bmap_add_extent_delay_real()
1840 error = xfs_btree_delete(bma->cur, &i); in xfs_bmap_add_extent_delay_real()
1844 error = xfs_btree_decrement(bma->cur, 0, &i); in xfs_bmap_add_extent_delay_real()
1848 error = xfs_bmbt_update(bma->cur, LEFT.br_startoff, in xfs_bmap_add_extent_delay_real()
1863 bma->idx--; in xfs_bmap_add_extent_delay_real()
1865 trace_xfs_bmap_pre_update(bma->ip, bma->idx, state, _THIS_IP_); in xfs_bmap_add_extent_delay_real()
1866 xfs_bmbt_set_blockcount(xfs_iext_get_ext(ifp, bma->idx), in xfs_bmap_add_extent_delay_real()
1868 trace_xfs_bmap_post_update(bma->ip, bma->idx, state, _THIS_IP_); in xfs_bmap_add_extent_delay_real()
1870 xfs_iext_remove(bma->ip, bma->idx + 1, 1, state); in xfs_bmap_add_extent_delay_real()
1871 if (bma->cur == NULL) in xfs_bmap_add_extent_delay_real()
1875 error = xfs_bmbt_lookup_eq(bma->cur, LEFT.br_startoff, in xfs_bmap_add_extent_delay_real()
1881 error = xfs_bmbt_update(bma->cur, LEFT.br_startoff, in xfs_bmap_add_extent_delay_real()
1895 trace_xfs_bmap_pre_update(bma->ip, bma->idx, state, _THIS_IP_); in xfs_bmap_add_extent_delay_real()
1899 trace_xfs_bmap_post_update(bma->ip, bma->idx, state, _THIS_IP_); in xfs_bmap_add_extent_delay_real()
1901 xfs_iext_remove(bma->ip, bma->idx + 1, 1, state); in xfs_bmap_add_extent_delay_real()
1902 if (bma->cur == NULL) in xfs_bmap_add_extent_delay_real()
1906 error = xfs_bmbt_lookup_eq(bma->cur, RIGHT.br_startoff, in xfs_bmap_add_extent_delay_real()
1912 error = xfs_bmbt_update(bma->cur, PREV.br_startoff, in xfs_bmap_add_extent_delay_real()
1927 trace_xfs_bmap_pre_update(bma->ip, bma->idx, state, _THIS_IP_); in xfs_bmap_add_extent_delay_real()
1929 trace_xfs_bmap_post_update(bma->ip, bma->idx, state, _THIS_IP_); in xfs_bmap_add_extent_delay_real()
1931 bma->ip->i_d.di_nextents++; in xfs_bmap_add_extent_delay_real()
1932 if (bma->cur == NULL) in xfs_bmap_add_extent_delay_real()
1936 error = xfs_bmbt_lookup_eq(bma->cur, new->br_startoff, in xfs_bmap_add_extent_delay_real()
1942 bma->cur->bc_rec.b.br_state = XFS_EXT_NORM; in xfs_bmap_add_extent_delay_real()
1943 error = xfs_btree_insert(bma->cur, &i); in xfs_bmap_add_extent_delay_real()
1955 trace_xfs_bmap_pre_update(bma->ip, bma->idx - 1, state, _THIS_IP_); in xfs_bmap_add_extent_delay_real()
1956 xfs_bmbt_set_blockcount(xfs_iext_get_ext(ifp, bma->idx - 1), in xfs_bmap_add_extent_delay_real()
1960 trace_xfs_bmap_post_update(bma->ip, bma->idx - 1, state, _THIS_IP_); in xfs_bmap_add_extent_delay_real()
1963 trace_xfs_bmap_pre_update(bma->ip, bma->idx, state, _THIS_IP_); in xfs_bmap_add_extent_delay_real()
1965 if (bma->cur == NULL) in xfs_bmap_add_extent_delay_real()
1969 error = xfs_bmbt_lookup_eq(bma->cur, LEFT.br_startoff, in xfs_bmap_add_extent_delay_real()
1975 error = xfs_bmbt_update(bma->cur, LEFT.br_startoff, in xfs_bmap_add_extent_delay_real()
1983 da_new = XFS_FILBLKS_MIN(xfs_bmap_worst_indlen(bma->ip, temp), in xfs_bmap_add_extent_delay_real()
1986 trace_xfs_bmap_post_update(bma->ip, bma->idx, state, _THIS_IP_); in xfs_bmap_add_extent_delay_real()
1988 bma->idx--; in xfs_bmap_add_extent_delay_real()
1996 trace_xfs_bmap_pre_update(bma->ip, bma->idx, state, _THIS_IP_); in xfs_bmap_add_extent_delay_real()
2000 xfs_iext_insert(bma->ip, bma->idx, 1, new, state); in xfs_bmap_add_extent_delay_real()
2001 bma->ip->i_d.di_nextents++; in xfs_bmap_add_extent_delay_real()
2002 if (bma->cur == NULL) in xfs_bmap_add_extent_delay_real()
2006 error = xfs_bmbt_lookup_eq(bma->cur, new->br_startoff, in xfs_bmap_add_extent_delay_real()
2012 bma->cur->bc_rec.b.br_state = XFS_EXT_NORM; in xfs_bmap_add_extent_delay_real()
2013 error = xfs_btree_insert(bma->cur, &i); in xfs_bmap_add_extent_delay_real()
2019 if (xfs_bmap_needs_btree(bma->ip, XFS_DATA_FORK)) { in xfs_bmap_add_extent_delay_real()
2020 error = xfs_bmap_extents_to_btree(bma->tp, bma->ip, in xfs_bmap_add_extent_delay_real()
2021 bma->firstblock, bma->flist, in xfs_bmap_add_extent_delay_real()
2022 &bma->cur, 1, &tmp_rval, XFS_DATA_FORK); in xfs_bmap_add_extent_delay_real()
2027 da_new = XFS_FILBLKS_MIN(xfs_bmap_worst_indlen(bma->ip, temp), in xfs_bmap_add_extent_delay_real()
2029 (bma->cur ? bma->cur->bc_private.b.allocated : 0)); in xfs_bmap_add_extent_delay_real()
2030 ep = xfs_iext_get_ext(ifp, bma->idx + 1); in xfs_bmap_add_extent_delay_real()
2032 trace_xfs_bmap_post_update(bma->ip, bma->idx + 1, state, _THIS_IP_); in xfs_bmap_add_extent_delay_real()
2041 trace_xfs_bmap_pre_update(bma->ip, bma->idx + 1, state, _THIS_IP_); in xfs_bmap_add_extent_delay_real()
2043 xfs_bmbt_set_allf(xfs_iext_get_ext(ifp, bma->idx + 1), in xfs_bmap_add_extent_delay_real()
2047 trace_xfs_bmap_post_update(bma->ip, bma->idx + 1, state, _THIS_IP_); in xfs_bmap_add_extent_delay_real()
2048 if (bma->cur == NULL) in xfs_bmap_add_extent_delay_real()
2052 error = xfs_bmbt_lookup_eq(bma->cur, RIGHT.br_startoff, in xfs_bmap_add_extent_delay_real()
2058 error = xfs_bmbt_update(bma->cur, new->br_startoff, in xfs_bmap_add_extent_delay_real()
2067 da_new = XFS_FILBLKS_MIN(xfs_bmap_worst_indlen(bma->ip, temp), in xfs_bmap_add_extent_delay_real()
2069 trace_xfs_bmap_pre_update(bma->ip, bma->idx, state, _THIS_IP_); in xfs_bmap_add_extent_delay_real()
2071 trace_xfs_bmap_post_update(bma->ip, bma->idx, state, _THIS_IP_); in xfs_bmap_add_extent_delay_real()
2073 bma->idx++; in xfs_bmap_add_extent_delay_real()
2082 trace_xfs_bmap_pre_update(bma->ip, bma->idx, state, _THIS_IP_); in xfs_bmap_add_extent_delay_real()
2084 xfs_iext_insert(bma->ip, bma->idx + 1, 1, new, state); in xfs_bmap_add_extent_delay_real()
2085 bma->ip->i_d.di_nextents++; in xfs_bmap_add_extent_delay_real()
2086 if (bma->cur == NULL) in xfs_bmap_add_extent_delay_real()
2090 error = xfs_bmbt_lookup_eq(bma->cur, new->br_startoff, in xfs_bmap_add_extent_delay_real()
2096 bma->cur->bc_rec.b.br_state = XFS_EXT_NORM; in xfs_bmap_add_extent_delay_real()
2097 error = xfs_btree_insert(bma->cur, &i); in xfs_bmap_add_extent_delay_real()
2103 if (xfs_bmap_needs_btree(bma->ip, XFS_DATA_FORK)) { in xfs_bmap_add_extent_delay_real()
2104 error = xfs_bmap_extents_to_btree(bma->tp, bma->ip, in xfs_bmap_add_extent_delay_real()
2105 bma->firstblock, bma->flist, &bma->cur, 1, in xfs_bmap_add_extent_delay_real()
2111 da_new = XFS_FILBLKS_MIN(xfs_bmap_worst_indlen(bma->ip, temp), in xfs_bmap_add_extent_delay_real()
2113 (bma->cur ? bma->cur->bc_private.b.allocated : 0)); in xfs_bmap_add_extent_delay_real()
2114 ep = xfs_iext_get_ext(ifp, bma->idx); in xfs_bmap_add_extent_delay_real()
2116 trace_xfs_bmap_post_update(bma->ip, bma->idx, state, _THIS_IP_); in xfs_bmap_add_extent_delay_real()
2118 bma->idx++; in xfs_bmap_add_extent_delay_real()
2144 trace_xfs_bmap_pre_update(bma->ip, bma->idx, 0, _THIS_IP_); in xfs_bmap_add_extent_delay_real()
2149 (int)xfs_bmap_worst_indlen(bma->ip, temp2)); in xfs_bmap_add_extent_delay_real()
2153 xfs_iext_insert(bma->ip, bma->idx + 1, 2, &LEFT, state); in xfs_bmap_add_extent_delay_real()
2154 bma->ip->i_d.di_nextents++; in xfs_bmap_add_extent_delay_real()
2155 if (bma->cur == NULL) in xfs_bmap_add_extent_delay_real()
2159 error = xfs_bmbt_lookup_eq(bma->cur, new->br_startoff, in xfs_bmap_add_extent_delay_real()
2165 bma->cur->bc_rec.b.br_state = XFS_EXT_NORM; in xfs_bmap_add_extent_delay_real()
2166 error = xfs_btree_insert(bma->cur, &i); in xfs_bmap_add_extent_delay_real()
2172 if (xfs_bmap_needs_btree(bma->ip, XFS_DATA_FORK)) { in xfs_bmap_add_extent_delay_real()
2173 error = xfs_bmap_extents_to_btree(bma->tp, bma->ip, in xfs_bmap_add_extent_delay_real()
2174 bma->firstblock, bma->flist, &bma->cur, in xfs_bmap_add_extent_delay_real()
2180 temp = xfs_bmap_worst_indlen(bma->ip, temp); in xfs_bmap_add_extent_delay_real()
2181 temp2 = xfs_bmap_worst_indlen(bma->ip, temp2); in xfs_bmap_add_extent_delay_real()
2183 (bma->cur ? bma->cur->bc_private.b.allocated : 0)); in xfs_bmap_add_extent_delay_real()
2185 error = xfs_mod_fdblocks(bma->ip->i_mount, in xfs_bmap_add_extent_delay_real()
2192 ep = xfs_iext_get_ext(ifp, bma->idx); in xfs_bmap_add_extent_delay_real()
2194 trace_xfs_bmap_post_update(bma->ip, bma->idx, state, _THIS_IP_); in xfs_bmap_add_extent_delay_real()
2195 trace_xfs_bmap_pre_update(bma->ip, bma->idx + 2, state, _THIS_IP_); in xfs_bmap_add_extent_delay_real()
2196 xfs_bmbt_set_startblock(xfs_iext_get_ext(ifp, bma->idx + 2), in xfs_bmap_add_extent_delay_real()
2198 trace_xfs_bmap_post_update(bma->ip, bma->idx + 2, state, _THIS_IP_); in xfs_bmap_add_extent_delay_real()
2200 bma->idx++; in xfs_bmap_add_extent_delay_real()
2218 if (xfs_bmap_needs_btree(bma->ip, XFS_DATA_FORK)) { in xfs_bmap_add_extent_delay_real()
2221 ASSERT(bma->cur == NULL); in xfs_bmap_add_extent_delay_real()
2222 error = xfs_bmap_extents_to_btree(bma->tp, bma->ip, in xfs_bmap_add_extent_delay_real()
2223 bma->firstblock, bma->flist, &bma->cur, in xfs_bmap_add_extent_delay_real()
2225 bma->logflags |= tmp_logflags; in xfs_bmap_add_extent_delay_real()
2233 if (bma->cur) in xfs_bmap_add_extent_delay_real()
2234 temp += bma->cur->bc_private.b.allocated; in xfs_bmap_add_extent_delay_real()
2237 xfs_mod_fdblocks(bma->ip->i_mount, in xfs_bmap_add_extent_delay_real()
2242 if (bma->cur) in xfs_bmap_add_extent_delay_real()
2243 bma->cur->bc_private.b.allocated = 0; in xfs_bmap_add_extent_delay_real()
2245 xfs_bmap_check_leaf_extents(bma->cur, bma->ip, XFS_DATA_FORK); in xfs_bmap_add_extent_delay_real()
2247 bma->logflags |= rval; in xfs_bmap_add_extent_delay_real()
2929 struct xfs_bmalloca *bma, in xfs_bmap_add_extent_hole_real() argument
2932 struct xfs_bmbt_irec *new = &bma->got; in xfs_bmap_add_extent_hole_real()
2942 mp = bma->tp ? bma->tp->t_mountp : NULL; in xfs_bmap_add_extent_hole_real()
2943 ifp = XFS_IFORK_PTR(bma->ip, whichfork); in xfs_bmap_add_extent_hole_real()
2945 ASSERT(bma->idx >= 0); in xfs_bmap_add_extent_hole_real()
2946 ASSERT(bma->idx <= ifp->if_bytes / sizeof(struct xfs_bmbt_rec)); in xfs_bmap_add_extent_hole_real()
2948 ASSERT(!bma->cur || in xfs_bmap_add_extent_hole_real()
2949 !(bma->cur->bc_private.b.flags & XFS_BTCUR_BPRV_WASDEL)); in xfs_bmap_add_extent_hole_real()
2960 if (bma->idx > 0) { in xfs_bmap_add_extent_hole_real()
2962 xfs_bmbt_get_all(xfs_iext_get_ext(ifp, bma->idx - 1), &left); in xfs_bmap_add_extent_hole_real()
2971 if (bma->idx < ifp->if_bytes / (uint)sizeof(xfs_bmbt_rec_t)) { in xfs_bmap_add_extent_hole_real()
2973 xfs_bmbt_get_all(xfs_iext_get_ext(ifp, bma->idx), &right); in xfs_bmap_add_extent_hole_real()
3010 --bma->idx; in xfs_bmap_add_extent_hole_real()
3011 trace_xfs_bmap_pre_update(bma->ip, bma->idx, state, _THIS_IP_); in xfs_bmap_add_extent_hole_real()
3012 xfs_bmbt_set_blockcount(xfs_iext_get_ext(ifp, bma->idx), in xfs_bmap_add_extent_hole_real()
3015 trace_xfs_bmap_post_update(bma->ip, bma->idx, state, _THIS_IP_); in xfs_bmap_add_extent_hole_real()
3017 xfs_iext_remove(bma->ip, bma->idx + 1, 1, state); in xfs_bmap_add_extent_hole_real()
3019 XFS_IFORK_NEXT_SET(bma->ip, whichfork, in xfs_bmap_add_extent_hole_real()
3020 XFS_IFORK_NEXTENTS(bma->ip, whichfork) - 1); in xfs_bmap_add_extent_hole_real()
3021 if (bma->cur == NULL) { in xfs_bmap_add_extent_hole_real()
3025 error = xfs_bmbt_lookup_eq(bma->cur, right.br_startoff, in xfs_bmap_add_extent_hole_real()
3031 error = xfs_btree_delete(bma->cur, &i); in xfs_bmap_add_extent_hole_real()
3035 error = xfs_btree_decrement(bma->cur, 0, &i); in xfs_bmap_add_extent_hole_real()
3039 error = xfs_bmbt_update(bma->cur, left.br_startoff, in xfs_bmap_add_extent_hole_real()
3056 --bma->idx; in xfs_bmap_add_extent_hole_real()
3057 trace_xfs_bmap_pre_update(bma->ip, bma->idx, state, _THIS_IP_); in xfs_bmap_add_extent_hole_real()
3058 xfs_bmbt_set_blockcount(xfs_iext_get_ext(ifp, bma->idx), in xfs_bmap_add_extent_hole_real()
3060 trace_xfs_bmap_post_update(bma->ip, bma->idx, state, _THIS_IP_); in xfs_bmap_add_extent_hole_real()
3062 if (bma->cur == NULL) { in xfs_bmap_add_extent_hole_real()
3066 error = xfs_bmbt_lookup_eq(bma->cur, left.br_startoff, in xfs_bmap_add_extent_hole_real()
3072 error = xfs_bmbt_update(bma->cur, left.br_startoff, in xfs_bmap_add_extent_hole_real()
3088 trace_xfs_bmap_pre_update(bma->ip, bma->idx, state, _THIS_IP_); in xfs_bmap_add_extent_hole_real()
3089 xfs_bmbt_set_allf(xfs_iext_get_ext(ifp, bma->idx), in xfs_bmap_add_extent_hole_real()
3093 trace_xfs_bmap_post_update(bma->ip, bma->idx, state, _THIS_IP_); in xfs_bmap_add_extent_hole_real()
3095 if (bma->cur == NULL) { in xfs_bmap_add_extent_hole_real()
3099 error = xfs_bmbt_lookup_eq(bma->cur, in xfs_bmap_add_extent_hole_real()
3106 error = xfs_bmbt_update(bma->cur, new->br_startoff, in xfs_bmap_add_extent_hole_real()
3122 xfs_iext_insert(bma->ip, bma->idx, 1, new, state); in xfs_bmap_add_extent_hole_real()
3123 XFS_IFORK_NEXT_SET(bma->ip, whichfork, in xfs_bmap_add_extent_hole_real()
3124 XFS_IFORK_NEXTENTS(bma->ip, whichfork) + 1); in xfs_bmap_add_extent_hole_real()
3125 if (bma->cur == NULL) { in xfs_bmap_add_extent_hole_real()
3129 error = xfs_bmbt_lookup_eq(bma->cur, in xfs_bmap_add_extent_hole_real()
3136 bma->cur->bc_rec.b.br_state = new->br_state; in xfs_bmap_add_extent_hole_real()
3137 error = xfs_btree_insert(bma->cur, &i); in xfs_bmap_add_extent_hole_real()
3146 if (xfs_bmap_needs_btree(bma->ip, whichfork)) { in xfs_bmap_add_extent_hole_real()
3149 ASSERT(bma->cur == NULL); in xfs_bmap_add_extent_hole_real()
3150 error = xfs_bmap_extents_to_btree(bma->tp, bma->ip, in xfs_bmap_add_extent_hole_real()
3151 bma->firstblock, bma->flist, &bma->cur, in xfs_bmap_add_extent_hole_real()
3153 bma->logflags |= tmp_logflags; in xfs_bmap_add_extent_hole_real()
3159 if (bma->cur) in xfs_bmap_add_extent_hole_real()
3160 bma->cur->bc_private.b.allocated = 0; in xfs_bmap_add_extent_hole_real()
3162 xfs_bmap_check_leaf_extents(bma->cur, bma->ip, whichfork); in xfs_bmap_add_extent_hole_real()
3164 bma->logflags |= rval; in xfs_bmap_add_extent_hole_real()
4279 struct xfs_bmalloca *bma) in xfs_bmapi_allocate() argument
4281 struct xfs_mount *mp = bma->ip->i_mount; in xfs_bmapi_allocate()
4282 int whichfork = (bma->flags & XFS_BMAPI_ATTRFORK) ? in xfs_bmapi_allocate()
4284 struct xfs_ifork *ifp = XFS_IFORK_PTR(bma->ip, whichfork); in xfs_bmapi_allocate()
4288 ASSERT(bma->length > 0); in xfs_bmapi_allocate()
4294 if (bma->wasdel) { in xfs_bmapi_allocate()
4295 bma->length = (xfs_extlen_t)bma->got.br_blockcount; in xfs_bmapi_allocate()
4296 bma->offset = bma->got.br_startoff; in xfs_bmapi_allocate()
4297 if (bma->idx != NULLEXTNUM && bma->idx) { in xfs_bmapi_allocate()
4298 xfs_bmbt_get_all(xfs_iext_get_ext(ifp, bma->idx - 1), in xfs_bmapi_allocate()
4299 &bma->prev); in xfs_bmapi_allocate()
4302 bma->length = XFS_FILBLKS_MIN(bma->length, MAXEXTLEN); in xfs_bmapi_allocate()
4303 if (!bma->eof) in xfs_bmapi_allocate()
4304 bma->length = XFS_FILBLKS_MIN(bma->length, in xfs_bmapi_allocate()
4305 bma->got.br_startoff - bma->offset); in xfs_bmapi_allocate()
4313 if (!(bma->flags & XFS_BMAPI_METADATA)) { in xfs_bmapi_allocate()
4314 bma->userdata = (bma->offset == 0) ? in xfs_bmapi_allocate()
4316 if (bma->flags & XFS_BMAPI_ZERO) in xfs_bmapi_allocate()
4317 bma->userdata |= XFS_ALLOC_USERDATA_ZERO; in xfs_bmapi_allocate()
4320 bma->minlen = (bma->flags & XFS_BMAPI_CONTIG) ? bma->length : 1; in xfs_bmapi_allocate()
4326 if (mp->m_dalign && bma->length >= mp->m_dalign && in xfs_bmapi_allocate()
4327 !(bma->flags & XFS_BMAPI_METADATA) && whichfork == XFS_DATA_FORK) { in xfs_bmapi_allocate()
4328 error = xfs_bmap_isaeof(bma, whichfork); in xfs_bmapi_allocate()
4333 error = xfs_bmap_alloc(bma); in xfs_bmapi_allocate()
4337 if (bma->flist->xbf_low) in xfs_bmapi_allocate()
4338 bma->minleft = 0; in xfs_bmapi_allocate()
4339 if (bma->cur) in xfs_bmapi_allocate()
4340 bma->cur->bc_private.b.firstblock = *bma->firstblock; in xfs_bmapi_allocate()
4341 if (bma->blkno == NULLFSBLOCK) in xfs_bmapi_allocate()
4343 if ((ifp->if_flags & XFS_IFBROOT) && !bma->cur) { in xfs_bmapi_allocate()
4344 bma->cur = xfs_bmbt_init_cursor(mp, bma->tp, bma->ip, whichfork); in xfs_bmapi_allocate()
4345 bma->cur->bc_private.b.firstblock = *bma->firstblock; in xfs_bmapi_allocate()
4346 bma->cur->bc_private.b.flist = bma->flist; in xfs_bmapi_allocate()
4352 bma->nallocs++; in xfs_bmapi_allocate()
4354 if (bma->cur) in xfs_bmapi_allocate()
4355 bma->cur->bc_private.b.flags = in xfs_bmapi_allocate()
4356 bma->wasdel ? XFS_BTCUR_BPRV_WASDEL : 0; in xfs_bmapi_allocate()
4358 bma->got.br_startoff = bma->offset; in xfs_bmapi_allocate()
4359 bma->got.br_startblock = bma->blkno; in xfs_bmapi_allocate()
4360 bma->got.br_blockcount = bma->length; in xfs_bmapi_allocate()
4361 bma->got.br_state = XFS_EXT_NORM; in xfs_bmapi_allocate()
4367 if (!bma->wasdel && (bma->flags & XFS_BMAPI_PREALLOC) && in xfs_bmapi_allocate()
4369 bma->got.br_state = XFS_EXT_UNWRITTEN; in xfs_bmapi_allocate()
4371 if (bma->wasdel) in xfs_bmapi_allocate()
4372 error = xfs_bmap_add_extent_delay_real(bma); in xfs_bmapi_allocate()
4374 error = xfs_bmap_add_extent_hole_real(bma, whichfork); in xfs_bmapi_allocate()
4376 bma->logflags |= tmp_logflags; in xfs_bmapi_allocate()
4385 xfs_bmbt_get_all(xfs_iext_get_ext(ifp, bma->idx), &bma->got); in xfs_bmapi_allocate()
4387 ASSERT(bma->got.br_startoff <= bma->offset); in xfs_bmapi_allocate()
4388 ASSERT(bma->got.br_startoff + bma->got.br_blockcount >= in xfs_bmapi_allocate()
4389 bma->offset + bma->length); in xfs_bmapi_allocate()
4390 ASSERT(bma->got.br_state == XFS_EXT_NORM || in xfs_bmapi_allocate()
4391 bma->got.br_state == XFS_EXT_UNWRITTEN); in xfs_bmapi_allocate()
4397 struct xfs_bmalloca *bma, in xfs_bmapi_convert_unwritten() argument
4404 struct xfs_ifork *ifp = XFS_IFORK_PTR(bma->ip, whichfork); in xfs_bmapi_convert_unwritten()
4423 if ((ifp->if_flags & XFS_IFBROOT) && !bma->cur) { in xfs_bmapi_convert_unwritten()
4424 bma->cur = xfs_bmbt_init_cursor(bma->ip->i_mount, bma->tp, in xfs_bmapi_convert_unwritten()
4425 bma->ip, whichfork); in xfs_bmapi_convert_unwritten()
4426 bma->cur->bc_private.b.firstblock = *bma->firstblock; in xfs_bmapi_convert_unwritten()
4427 bma->cur->bc_private.b.flist = bma->flist; in xfs_bmapi_convert_unwritten()
4437 error = xfs_zero_extent(bma->ip, mval->br_startblock, in xfs_bmapi_convert_unwritten()
4443 error = xfs_bmap_add_extent_unwritten_real(bma->tp, bma->ip, &bma->idx, in xfs_bmapi_convert_unwritten()
4444 &bma->cur, mval, bma->firstblock, bma->flist, in xfs_bmapi_convert_unwritten()
4454 bma->logflags |= tmp_logflags | XFS_ILOG_CORE; in xfs_bmapi_convert_unwritten()
4463 xfs_bmbt_get_all(xfs_iext_get_ext(ifp, bma->idx), &bma->got); in xfs_bmapi_convert_unwritten()
4502 struct xfs_bmalloca bma = { NULL }; /* args for xfs_bmap_alloc */ in xfs_bmapi_write() local
4565 bma.minleft = be16_to_cpu(ifp->if_broot->bb_level) + 1; in xfs_bmapi_write()
4567 bma.minleft = 1; in xfs_bmapi_write()
4569 bma.minleft = 0; in xfs_bmapi_write()
4578 xfs_bmap_search_extents(ip, bno, whichfork, &eof, &bma.idx, &bma.got, in xfs_bmapi_write()
4579 &bma.prev); in xfs_bmapi_write()
4584 bma.tp = tp; in xfs_bmapi_write()
4585 bma.ip = ip; in xfs_bmapi_write()
4586 bma.total = total; in xfs_bmapi_write()
4587 bma.userdata = 0; in xfs_bmapi_write()
4588 bma.flist = flist; in xfs_bmapi_write()
4589 bma.firstblock = firstblock; in xfs_bmapi_write()
4592 inhole = eof || bma.got.br_startoff > bno; in xfs_bmapi_write()
4593 wasdelay = !inhole && isnullstartblock(bma.got.br_startblock); in xfs_bmapi_write()
4600 bma.eof = eof; in xfs_bmapi_write()
4601 bma.conv = !!(flags & XFS_BMAPI_CONVERT); in xfs_bmapi_write()
4602 bma.wasdel = wasdelay; in xfs_bmapi_write()
4603 bma.offset = bno; in xfs_bmapi_write()
4604 bma.flags = flags; in xfs_bmapi_write()
4614 bma.length = MAXEXTLEN; in xfs_bmapi_write()
4616 bma.length = len; in xfs_bmapi_write()
4619 ASSERT(bma.length > 0); in xfs_bmapi_write()
4620 error = xfs_bmapi_allocate(&bma); in xfs_bmapi_write()
4623 if (bma.blkno == NULLFSBLOCK) in xfs_bmapi_write()
4628 xfs_bmapi_trim_map(mval, &bma.got, &bno, len, obno, in xfs_bmapi_write()
4632 error = xfs_bmapi_convert_unwritten(&bma, mval, len, flags); in xfs_bmapi_write()
4646 if (bno >= end || n >= *nmap || bma.nallocs >= *nmap) in xfs_bmapi_write()
4650 bma.prev = bma.got; in xfs_bmapi_write()
4651 if (++bma.idx < ifp->if_bytes / sizeof(xfs_bmbt_rec_t)) { in xfs_bmapi_write()
4652 xfs_bmbt_get_all(xfs_iext_get_ext(ifp, bma.idx), in xfs_bmapi_write()
4653 &bma.got); in xfs_bmapi_write()
4665 ASSERT(bma.cur); in xfs_bmapi_write()
4666 error = xfs_bmap_btree_to_extents(tp, ip, bma.cur, in xfs_bmapi_write()
4668 bma.logflags |= tmp_logflags; in xfs_bmapi_write()
4682 if ((bma.logflags & xfs_ilog_fext(whichfork)) && in xfs_bmapi_write()
4684 bma.logflags &= ~xfs_ilog_fext(whichfork); in xfs_bmapi_write()
4685 else if ((bma.logflags & xfs_ilog_fbroot(whichfork)) && in xfs_bmapi_write()
4687 bma.logflags &= ~xfs_ilog_fbroot(whichfork); in xfs_bmapi_write()
4693 if (bma.logflags) in xfs_bmapi_write()
4694 xfs_trans_log_inode(tp, ip, bma.logflags); in xfs_bmapi_write()
4696 if (bma.cur) { in xfs_bmapi_write()
4701 bma.cur->bc_private.b.firstblock) || in xfs_bmapi_write()
4705 bma.cur->bc_private.b.firstblock))); in xfs_bmapi_write()
4706 *firstblock = bma.cur->bc_private.b.firstblock; in xfs_bmapi_write()
4708 xfs_btree_del_cursor(bma.cur, in xfs_bmapi_write()