Lines Matching refs:ap

3353 	struct xfs_bmalloca	*ap)	/* bmap alloc argument struct */  in xfs_bmap_adjacent()  argument
3368 mp = ap->ip->i_mount; in xfs_bmap_adjacent()
3369 nullfb = *ap->firstblock == NULLFSBLOCK; in xfs_bmap_adjacent()
3370 rt = XFS_IS_REALTIME_INODE(ap->ip) && ap->userdata; in xfs_bmap_adjacent()
3371 fb_agno = nullfb ? NULLAGNUMBER : XFS_FSB_TO_AGNO(mp, *ap->firstblock); in xfs_bmap_adjacent()
3376 if (ap->eof && ap->prev.br_startoff != NULLFILEOFF && in xfs_bmap_adjacent()
3377 !isnullstartblock(ap->prev.br_startblock) && in xfs_bmap_adjacent()
3378 ISVALID(ap->prev.br_startblock + ap->prev.br_blockcount, in xfs_bmap_adjacent()
3379 ap->prev.br_startblock)) { in xfs_bmap_adjacent()
3380 ap->blkno = ap->prev.br_startblock + ap->prev.br_blockcount; in xfs_bmap_adjacent()
3384 adjust = ap->offset - in xfs_bmap_adjacent()
3385 (ap->prev.br_startoff + ap->prev.br_blockcount); in xfs_bmap_adjacent()
3387 ISVALID(ap->blkno + adjust, ap->prev.br_startblock)) in xfs_bmap_adjacent()
3388 ap->blkno += adjust; in xfs_bmap_adjacent()
3395 else if (!ap->eof) { in xfs_bmap_adjacent()
3405 if (ap->prev.br_startoff != NULLFILEOFF && in xfs_bmap_adjacent()
3406 !isnullstartblock(ap->prev.br_startblock) && in xfs_bmap_adjacent()
3407 (prevbno = ap->prev.br_startblock + in xfs_bmap_adjacent()
3408 ap->prev.br_blockcount) && in xfs_bmap_adjacent()
3409 ISVALID(prevbno, ap->prev.br_startblock)) { in xfs_bmap_adjacent()
3413 adjust = prevdiff = ap->offset - in xfs_bmap_adjacent()
3414 (ap->prev.br_startoff + in xfs_bmap_adjacent()
3415 ap->prev.br_blockcount); in xfs_bmap_adjacent()
3424 if (prevdiff <= XFS_ALLOC_GAP_UNITS * ap->length && in xfs_bmap_adjacent()
3426 ap->prev.br_startblock)) in xfs_bmap_adjacent()
3447 if (!isnullstartblock(ap->got.br_startblock)) { in xfs_bmap_adjacent()
3451 adjust = gotdiff = ap->got.br_startoff - ap->offset; in xfs_bmap_adjacent()
3456 gotbno = ap->got.br_startblock; in xfs_bmap_adjacent()
3464 if (gotdiff <= XFS_ALLOC_GAP_UNITS * ap->length && in xfs_bmap_adjacent()
3467 else if (ISVALID(gotbno - ap->length, gotbno)) { in xfs_bmap_adjacent()
3468 gotbno -= ap->length; in xfs_bmap_adjacent()
3469 gotdiff += adjust - ap->length; in xfs_bmap_adjacent()
3490 ap->blkno = prevdiff <= gotdiff ? prevbno : gotbno; in xfs_bmap_adjacent()
3492 ap->blkno = prevbno; in xfs_bmap_adjacent()
3494 ap->blkno = gotbno; in xfs_bmap_adjacent()
3535 struct xfs_bmalloca *ap, in xfs_bmap_select_minlen() argument
3540 if (notinit || *blen < ap->minlen) { in xfs_bmap_select_minlen()
3545 args->minlen = ap->minlen; in xfs_bmap_select_minlen()
3563 struct xfs_bmalloca *ap, in xfs_bmap_btalloc_nullfb() argument
3567 struct xfs_mount *mp = ap->ip->i_mount; in xfs_bmap_btalloc_nullfb()
3573 args->total = ap->total; in xfs_bmap_btalloc_nullfb()
3591 xfs_bmap_select_minlen(ap, args, blen, notinit); in xfs_bmap_btalloc_nullfb()
3597 struct xfs_bmalloca *ap, in xfs_bmap_btalloc_filestreams() argument
3601 struct xfs_mount *mp = ap->ip->i_mount; in xfs_bmap_btalloc_filestreams()
3607 args->total = ap->total; in xfs_bmap_btalloc_filestreams()
3618 error = xfs_filestream_new_ag(ap, &ag); in xfs_bmap_btalloc_filestreams()
3629 xfs_bmap_select_minlen(ap, args, blen, notinit); in xfs_bmap_btalloc_filestreams()
3635 ap->blkno = args->fsbno = XFS_AGB_TO_FSB(mp, ag, 0); in xfs_bmap_btalloc_filestreams()
3641 struct xfs_bmalloca *ap) /* bmap alloc argument struct */ in xfs_bmap_btalloc() argument
3657 ASSERT(ap->length); in xfs_bmap_btalloc()
3659 mp = ap->ip->i_mount; in xfs_bmap_btalloc()
3668 align = ap->userdata ? xfs_get_extsz_hint(ap->ip) : 0; in xfs_bmap_btalloc()
3670 error = xfs_bmap_extsize_align(mp, &ap->got, &ap->prev, in xfs_bmap_btalloc()
3671 align, 0, ap->eof, 0, ap->conv, in xfs_bmap_btalloc()
3672 &ap->offset, &ap->length); in xfs_bmap_btalloc()
3674 ASSERT(ap->length); in xfs_bmap_btalloc()
3678 nullfb = *ap->firstblock == NULLFSBLOCK; in xfs_bmap_btalloc()
3679 fb_agno = nullfb ? NULLAGNUMBER : XFS_FSB_TO_AGNO(mp, *ap->firstblock); in xfs_bmap_btalloc()
3681 if (ap->userdata && xfs_inode_is_filestream(ap->ip)) { in xfs_bmap_btalloc()
3682 ag = xfs_filestream_lookup_ag(ap->ip); in xfs_bmap_btalloc()
3684 ap->blkno = XFS_AGB_TO_FSB(mp, ag, 0); in xfs_bmap_btalloc()
3686 ap->blkno = XFS_INO_TO_FSB(mp, ap->ip->i_ino); in xfs_bmap_btalloc()
3689 ap->blkno = *ap->firstblock; in xfs_bmap_btalloc()
3691 xfs_bmap_adjacent(ap); in xfs_bmap_btalloc()
3697 if (nullfb || XFS_FSB_TO_AGNO(mp, ap->blkno) == fb_agno) in xfs_bmap_btalloc()
3700 ap->blkno = *ap->firstblock; in xfs_bmap_btalloc()
3706 args.tp = ap->tp; in xfs_bmap_btalloc()
3708 args.fsbno = ap->blkno; in xfs_bmap_btalloc()
3711 args.maxlen = MIN(ap->length, XFS_ALLOC_AG_MAX_USABLE(mp)); in xfs_bmap_btalloc()
3712 args.firstblock = *ap->firstblock; in xfs_bmap_btalloc()
3720 if (ap->userdata && xfs_inode_is_filestream(ap->ip)) in xfs_bmap_btalloc()
3721 error = xfs_bmap_btalloc_filestreams(ap, &args, &blen); in xfs_bmap_btalloc()
3723 error = xfs_bmap_btalloc_nullfb(ap, &args, &blen); in xfs_bmap_btalloc()
3726 } else if (ap->flist->xbf_low) { in xfs_bmap_btalloc()
3727 if (xfs_inode_is_filestream(ap->ip)) in xfs_bmap_btalloc()
3731 args.total = args.minlen = ap->minlen; in xfs_bmap_btalloc()
3734 args.total = ap->total; in xfs_bmap_btalloc()
3735 args.minlen = ap->minlen; in xfs_bmap_btalloc()
3740 if ((args.mod = (xfs_extlen_t)do_mod(ap->offset, args.prod))) in xfs_bmap_btalloc()
3747 if ((args.mod = (xfs_extlen_t)(do_mod(ap->offset, args.prod)))) in xfs_bmap_btalloc()
3759 if (!ap->flist->xbf_low && ap->aeof) { in xfs_bmap_btalloc()
3760 if (!ap->offset) { in xfs_bmap_btalloc()
3801 args.minleft = ap->minleft; in xfs_bmap_btalloc()
3802 args.wasdel = ap->wasdel; in xfs_bmap_btalloc()
3804 args.userdata = ap->userdata; in xfs_bmap_btalloc()
3805 if (ap->userdata & XFS_ALLOC_USERDATA_ZERO) in xfs_bmap_btalloc()
3806 args.ip = ap->ip; in xfs_bmap_btalloc()
3818 args.fsbno = ap->blkno; in xfs_bmap_btalloc()
3832 args.fsbno = ap->blkno; in xfs_bmap_btalloc()
3838 args.minlen > ap->minlen) { in xfs_bmap_btalloc()
3839 args.minlen = ap->minlen; in xfs_bmap_btalloc()
3841 args.fsbno = ap->blkno; in xfs_bmap_btalloc()
3848 args.total = ap->minlen; in xfs_bmap_btalloc()
3852 ap->flist->xbf_low = 1; in xfs_bmap_btalloc()
3859 ASSERT(*ap->firstblock == NULLFSBLOCK || in xfs_bmap_btalloc()
3860 XFS_FSB_TO_AGNO(mp, *ap->firstblock) == in xfs_bmap_btalloc()
3862 (ap->flist->xbf_low && in xfs_bmap_btalloc()
3863 XFS_FSB_TO_AGNO(mp, *ap->firstblock) < in xfs_bmap_btalloc()
3866 ap->blkno = args.fsbno; in xfs_bmap_btalloc()
3867 if (*ap->firstblock == NULLFSBLOCK) in xfs_bmap_btalloc()
3868 *ap->firstblock = args.fsbno; in xfs_bmap_btalloc()
3870 (ap->flist->xbf_low && fb_agno < args.agno)); in xfs_bmap_btalloc()
3871 ap->length = args.len; in xfs_bmap_btalloc()
3872 ap->ip->i_d.di_nblocks += args.len; in xfs_bmap_btalloc()
3873 xfs_trans_log_inode(ap->tp, ap->ip, XFS_ILOG_CORE); in xfs_bmap_btalloc()
3874 if (ap->wasdel) in xfs_bmap_btalloc()
3875 ap->ip->i_delayed_blks -= args.len; in xfs_bmap_btalloc()
3880 xfs_trans_mod_dquot_byino(ap->tp, ap->ip, in xfs_bmap_btalloc()
3881 ap->wasdel ? XFS_TRANS_DQ_DELBCOUNT : in xfs_bmap_btalloc()
3885 ap->blkno = NULLFSBLOCK; in xfs_bmap_btalloc()
3886 ap->length = 0; in xfs_bmap_btalloc()
3897 struct xfs_bmalloca *ap) /* bmap alloc argument struct */ in xfs_bmap_alloc() argument
3899 if (XFS_IS_REALTIME_INODE(ap->ip) && ap->userdata) in xfs_bmap_alloc()
3900 return xfs_bmap_rtalloc(ap); in xfs_bmap_alloc()
3901 return xfs_bmap_btalloc(ap); in xfs_bmap_alloc()