Lines Matching refs:ap
98 xfs_bmalloca_t *ap); /* bmap alloc argument struct */
2022 xfs_bmalloca_t *ap) /* bmap alloc argument struct */ in xfs_bmap_adjacent() argument
2037 mp = ap->ip->i_mount; in xfs_bmap_adjacent()
2038 nullfb = *ap->firstblock == NULLFSBLOCK; in xfs_bmap_adjacent()
2039 rt = XFS_IS_REALTIME_INODE(ap->ip) && ap->userdata; in xfs_bmap_adjacent()
2040 fb_agno = nullfb ? NULLAGNUMBER : XFS_FSB_TO_AGNO(mp, *ap->firstblock); in xfs_bmap_adjacent()
2045 if (ap->eof && ap->prev.br_startoff != NULLFILEOFF && in xfs_bmap_adjacent()
2046 !isnullstartblock(ap->prev.br_startblock) && in xfs_bmap_adjacent()
2047 ISVALID(ap->prev.br_startblock + ap->prev.br_blockcount, in xfs_bmap_adjacent()
2048 ap->prev.br_startblock)) { in xfs_bmap_adjacent()
2049 ap->blkno = ap->prev.br_startblock + ap->prev.br_blockcount; in xfs_bmap_adjacent()
2053 adjust = ap->offset - in xfs_bmap_adjacent()
2054 (ap->prev.br_startoff + ap->prev.br_blockcount); in xfs_bmap_adjacent()
2056 ISVALID(ap->blkno + adjust, ap->prev.br_startblock)) in xfs_bmap_adjacent()
2057 ap->blkno += adjust; in xfs_bmap_adjacent()
2064 else if (!ap->eof) { in xfs_bmap_adjacent()
2074 if (ap->prev.br_startoff != NULLFILEOFF && in xfs_bmap_adjacent()
2075 !isnullstartblock(ap->prev.br_startblock) && in xfs_bmap_adjacent()
2076 (prevbno = ap->prev.br_startblock + in xfs_bmap_adjacent()
2077 ap->prev.br_blockcount) && in xfs_bmap_adjacent()
2078 ISVALID(prevbno, ap->prev.br_startblock)) { in xfs_bmap_adjacent()
2082 adjust = prevdiff = ap->offset - in xfs_bmap_adjacent()
2083 (ap->prev.br_startoff + in xfs_bmap_adjacent()
2084 ap->prev.br_blockcount); in xfs_bmap_adjacent()
2093 if (prevdiff <= XFS_ALLOC_GAP_UNITS * ap->length && in xfs_bmap_adjacent()
2095 ap->prev.br_startblock)) in xfs_bmap_adjacent()
2116 if (!isnullstartblock(ap->got.br_startblock)) { in xfs_bmap_adjacent()
2120 adjust = gotdiff = ap->got.br_startoff - ap->offset; in xfs_bmap_adjacent()
2125 gotbno = ap->got.br_startblock; in xfs_bmap_adjacent()
2133 if (gotdiff <= XFS_ALLOC_GAP_UNITS * ap->length && in xfs_bmap_adjacent()
2136 else if (ISVALID(gotbno - ap->length, gotbno)) { in xfs_bmap_adjacent()
2137 gotbno -= ap->length; in xfs_bmap_adjacent()
2138 gotdiff += adjust - ap->length; in xfs_bmap_adjacent()
2159 ap->blkno = prevdiff <= gotdiff ? prevbno : gotbno; in xfs_bmap_adjacent()
2161 ap->blkno = prevbno; in xfs_bmap_adjacent()
2163 ap->blkno = gotbno; in xfs_bmap_adjacent()
2170 xfs_bmalloca_t *ap) /* bmap alloc argument struct */ in xfs_bmap_rtalloc() argument
2180 mp = ap->ip->i_mount; in xfs_bmap_rtalloc()
2181 align = xfs_get_extsz_hint(ap->ip); in xfs_bmap_rtalloc()
2183 error = xfs_bmap_extsize_align(mp, &ap->got, &ap->prev, in xfs_bmap_rtalloc()
2184 align, 1, ap->eof, 0, in xfs_bmap_rtalloc()
2185 ap->conv, &ap->offset, &ap->length); in xfs_bmap_rtalloc()
2188 ASSERT(ap->length); in xfs_bmap_rtalloc()
2189 ASSERT(ap->length % mp->m_sb.sb_rextsize == 0); in xfs_bmap_rtalloc()
2195 if (do_mod(ap->offset, align) || ap->length % align) in xfs_bmap_rtalloc()
2200 ralen = ap->length / mp->m_sb.sb_rextsize; in xfs_bmap_rtalloc()
2215 xfs_trans_ijoin(ap->tp, mp->m_rbmip, XFS_ILOCK_EXCL); in xfs_bmap_rtalloc()
2221 if (ap->eof && ap->offset == 0) { in xfs_bmap_rtalloc()
2224 error = xfs_rtpick_extent(mp, ap->tp, ralen, &rtx); in xfs_bmap_rtalloc()
2227 ap->blkno = rtx * mp->m_sb.sb_rextsize; in xfs_bmap_rtalloc()
2229 ap->blkno = 0; in xfs_bmap_rtalloc()
2232 xfs_bmap_adjacent(ap); in xfs_bmap_rtalloc()
2237 atype = ap->blkno == 0 ? XFS_ALLOCTYPE_ANY_AG : XFS_ALLOCTYPE_NEAR_BNO; in xfs_bmap_rtalloc()
2238 do_div(ap->blkno, mp->m_sb.sb_rextsize); in xfs_bmap_rtalloc()
2239 rtb = ap->blkno; in xfs_bmap_rtalloc()
2240 ap->length = ralen; in xfs_bmap_rtalloc()
2241 if ((error = xfs_rtallocate_extent(ap->tp, ap->blkno, 1, ap->length, in xfs_bmap_rtalloc()
2242 &ralen, atype, ap->wasdel, prod, &rtb))) in xfs_bmap_rtalloc()
2245 (error = xfs_rtallocate_extent(ap->tp, ap->blkno, 1, in xfs_bmap_rtalloc()
2246 ap->length, &ralen, atype, in xfs_bmap_rtalloc()
2247 ap->wasdel, 1, &rtb))) in xfs_bmap_rtalloc()
2249 ap->blkno = rtb; in xfs_bmap_rtalloc()
2250 if (ap->blkno != NULLFSBLOCK) { in xfs_bmap_rtalloc()
2251 ap->blkno *= mp->m_sb.sb_rextsize; in xfs_bmap_rtalloc()
2253 ap->length = ralen; in xfs_bmap_rtalloc()
2254 ap->ip->i_d.di_nblocks += ralen; in xfs_bmap_rtalloc()
2255 xfs_trans_log_inode(ap->tp, ap->ip, XFS_ILOG_CORE); in xfs_bmap_rtalloc()
2256 if (ap->wasdel) in xfs_bmap_rtalloc()
2257 ap->ip->i_delayed_blks -= ralen; in xfs_bmap_rtalloc()
2262 xfs_trans_mod_dquot_byino(ap->tp, ap->ip, in xfs_bmap_rtalloc()
2263 ap->wasdel ? XFS_TRANS_DQ_DELRTBCOUNT : in xfs_bmap_rtalloc()
2266 ap->length = 0; in xfs_bmap_rtalloc()
2273 struct xfs_bmalloca *ap, in xfs_bmap_btalloc_nullfb() argument
2277 struct xfs_mount *mp = ap->ip->i_mount; in xfs_bmap_btalloc_nullfb()
2283 if (ap->userdata && xfs_inode_is_filestream(ap->ip)) in xfs_bmap_btalloc_nullfb()
2287 args->total = ap->total; in xfs_bmap_btalloc_nullfb()
2320 if (xfs_inode_is_filestream(ap->ip)) { in xfs_bmap_btalloc_nullfb()
2324 if (ap->userdata) { in xfs_bmap_btalloc_nullfb()
2337 error = xfs_filestream_new_ag(ap, &ag); in xfs_bmap_btalloc_nullfb()
2361 if (notinit || *blen < ap->minlen) in xfs_bmap_btalloc_nullfb()
2362 args->minlen = ap->minlen; in xfs_bmap_btalloc_nullfb()
2380 if (xfs_inode_is_filestream(ap->ip)) in xfs_bmap_btalloc_nullfb()
2381 ap->blkno = args->fsbno = XFS_AGB_TO_FSB(mp, ag, 0); in xfs_bmap_btalloc_nullfb()
2388 xfs_bmalloca_t *ap) /* bmap alloc argument struct */ in xfs_bmap_btalloc() argument
2403 ASSERT(ap->length); in xfs_bmap_btalloc()
2405 mp = ap->ip->i_mount; in xfs_bmap_btalloc()
2406 align = ap->userdata ? xfs_get_extsz_hint(ap->ip) : 0; in xfs_bmap_btalloc()
2408 error = xfs_bmap_extsize_align(mp, &ap->got, &ap->prev, in xfs_bmap_btalloc()
2409 align, 0, ap->eof, 0, ap->conv, in xfs_bmap_btalloc()
2410 &ap->offset, &ap->length); in xfs_bmap_btalloc()
2412 ASSERT(ap->length); in xfs_bmap_btalloc()
2414 nullfb = *ap->firstblock == NULLFSBLOCK; in xfs_bmap_btalloc()
2415 fb_agno = nullfb ? NULLAGNUMBER : XFS_FSB_TO_AGNO(mp, *ap->firstblock); in xfs_bmap_btalloc()
2417 if (ap->userdata && xfs_inode_is_filestream(ap->ip)) { in xfs_bmap_btalloc()
2418 ag = xfs_filestream_lookup_ag(ap->ip); in xfs_bmap_btalloc()
2420 ap->blkno = XFS_AGB_TO_FSB(mp, ag, 0); in xfs_bmap_btalloc()
2422 ap->blkno = XFS_INO_TO_FSB(mp, ap->ip->i_ino); in xfs_bmap_btalloc()
2425 ap->blkno = *ap->firstblock; in xfs_bmap_btalloc()
2427 xfs_bmap_adjacent(ap); in xfs_bmap_btalloc()
2433 if (nullfb || XFS_FSB_TO_AGNO(mp, ap->blkno) == fb_agno) in xfs_bmap_btalloc()
2436 ap->blkno = *ap->firstblock; in xfs_bmap_btalloc()
2441 args.tp = ap->tp; in xfs_bmap_btalloc()
2443 args.fsbno = ap->blkno; in xfs_bmap_btalloc()
2446 args.maxlen = MIN(ap->length, XFS_ALLOC_AG_MAX_USABLE(mp)); in xfs_bmap_btalloc()
2447 args.firstblock = *ap->firstblock; in xfs_bmap_btalloc()
2450 error = xfs_bmap_btalloc_nullfb(ap, &args, &blen); in xfs_bmap_btalloc()
2453 } else if (ap->flist->xbf_low) { in xfs_bmap_btalloc()
2454 if (xfs_inode_is_filestream(ap->ip)) in xfs_bmap_btalloc()
2458 args.total = args.minlen = ap->minlen; in xfs_bmap_btalloc()
2461 args.total = ap->total; in xfs_bmap_btalloc()
2462 args.minlen = ap->minlen; in xfs_bmap_btalloc()
2467 if ((args.mod = (xfs_extlen_t)do_mod(ap->offset, args.prod))) in xfs_bmap_btalloc()
2474 if ((args.mod = (xfs_extlen_t)(do_mod(ap->offset, args.prod)))) in xfs_bmap_btalloc()
2486 if (!ap->flist->xbf_low && ap->aeof) { in xfs_bmap_btalloc()
2487 if (!ap->offset) { in xfs_bmap_btalloc()
2528 args.minleft = ap->minleft; in xfs_bmap_btalloc()
2529 args.wasdel = ap->wasdel; in xfs_bmap_btalloc()
2531 args.userdata = ap->userdata; in xfs_bmap_btalloc()
2540 args.fsbno = ap->blkno; in xfs_bmap_btalloc()
2554 args.fsbno = ap->blkno; in xfs_bmap_btalloc()
2560 args.minlen > ap->minlen) { in xfs_bmap_btalloc()
2561 args.minlen = ap->minlen; in xfs_bmap_btalloc()
2563 args.fsbno = ap->blkno; in xfs_bmap_btalloc()
2570 args.total = ap->minlen; in xfs_bmap_btalloc()
2574 ap->flist->xbf_low = 1; in xfs_bmap_btalloc()
2581 ASSERT(*ap->firstblock == NULLFSBLOCK || in xfs_bmap_btalloc()
2582 XFS_FSB_TO_AGNO(mp, *ap->firstblock) == in xfs_bmap_btalloc()
2584 (ap->flist->xbf_low && in xfs_bmap_btalloc()
2585 XFS_FSB_TO_AGNO(mp, *ap->firstblock) < in xfs_bmap_btalloc()
2588 ap->blkno = args.fsbno; in xfs_bmap_btalloc()
2589 if (*ap->firstblock == NULLFSBLOCK) in xfs_bmap_btalloc()
2590 *ap->firstblock = args.fsbno; in xfs_bmap_btalloc()
2592 (ap->flist->xbf_low && fb_agno < args.agno)); in xfs_bmap_btalloc()
2593 ap->length = args.len; in xfs_bmap_btalloc()
2594 ap->ip->i_d.di_nblocks += args.len; in xfs_bmap_btalloc()
2595 xfs_trans_log_inode(ap->tp, ap->ip, XFS_ILOG_CORE); in xfs_bmap_btalloc()
2596 if (ap->wasdel) in xfs_bmap_btalloc()
2597 ap->ip->i_delayed_blks -= args.len; in xfs_bmap_btalloc()
2602 xfs_trans_mod_dquot_byino(ap->tp, ap->ip, in xfs_bmap_btalloc()
2603 ap->wasdel ? XFS_TRANS_DQ_DELBCOUNT : in xfs_bmap_btalloc()
2607 ap->blkno = NULLFSBLOCK; in xfs_bmap_btalloc()
2608 ap->length = 0; in xfs_bmap_btalloc()
2619 xfs_bmalloca_t *ap) /* bmap alloc argument struct */ in xfs_bmap_alloc() argument
2621 if (XFS_IS_REALTIME_INODE(ap->ip) && ap->userdata) in xfs_bmap_alloc()
2622 return xfs_bmap_rtalloc(ap); in xfs_bmap_alloc()
2623 return xfs_bmap_btalloc(ap); in xfs_bmap_alloc()