Lines Matching refs:ap
166 struct xfs_bmalloca *ap) /* bmap alloc argument struct */ in xfs_bmap_rtalloc() argument
176 mp = ap->ip->i_mount; in xfs_bmap_rtalloc()
177 align = xfs_get_extsz_hint(ap->ip); in xfs_bmap_rtalloc()
179 error = xfs_bmap_extsize_align(mp, &ap->got, &ap->prev, in xfs_bmap_rtalloc()
180 align, 1, ap->eof, 0, in xfs_bmap_rtalloc()
181 ap->conv, &ap->offset, &ap->length); in xfs_bmap_rtalloc()
184 ASSERT(ap->length); in xfs_bmap_rtalloc()
185 ASSERT(ap->length % mp->m_sb.sb_rextsize == 0); in xfs_bmap_rtalloc()
191 if (do_mod(ap->offset, align) || ap->length % align) in xfs_bmap_rtalloc()
196 ralen = ap->length / mp->m_sb.sb_rextsize; in xfs_bmap_rtalloc()
211 xfs_trans_ijoin(ap->tp, mp->m_rbmip, XFS_ILOCK_EXCL); in xfs_bmap_rtalloc()
217 if (ap->eof && ap->offset == 0) { in xfs_bmap_rtalloc()
220 error = xfs_rtpick_extent(mp, ap->tp, ralen, &rtx); in xfs_bmap_rtalloc()
223 ap->blkno = rtx * mp->m_sb.sb_rextsize; in xfs_bmap_rtalloc()
225 ap->blkno = 0; in xfs_bmap_rtalloc()
228 xfs_bmap_adjacent(ap); in xfs_bmap_rtalloc()
233 atype = ap->blkno == 0 ? XFS_ALLOCTYPE_ANY_AG : XFS_ALLOCTYPE_NEAR_BNO; in xfs_bmap_rtalloc()
234 do_div(ap->blkno, mp->m_sb.sb_rextsize); in xfs_bmap_rtalloc()
235 rtb = ap->blkno; in xfs_bmap_rtalloc()
236 ap->length = ralen; in xfs_bmap_rtalloc()
237 if ((error = xfs_rtallocate_extent(ap->tp, ap->blkno, 1, ap->length, in xfs_bmap_rtalloc()
238 &ralen, atype, ap->wasdel, prod, &rtb))) in xfs_bmap_rtalloc()
241 (error = xfs_rtallocate_extent(ap->tp, ap->blkno, 1, in xfs_bmap_rtalloc()
242 ap->length, &ralen, atype, in xfs_bmap_rtalloc()
243 ap->wasdel, 1, &rtb))) in xfs_bmap_rtalloc()
245 ap->blkno = rtb; in xfs_bmap_rtalloc()
246 if (ap->blkno != NULLFSBLOCK) { in xfs_bmap_rtalloc()
247 ap->blkno *= mp->m_sb.sb_rextsize; in xfs_bmap_rtalloc()
249 ap->length = ralen; in xfs_bmap_rtalloc()
250 ap->ip->i_d.di_nblocks += ralen; in xfs_bmap_rtalloc()
251 xfs_trans_log_inode(ap->tp, ap->ip, XFS_ILOG_CORE); in xfs_bmap_rtalloc()
252 if (ap->wasdel) in xfs_bmap_rtalloc()
253 ap->ip->i_delayed_blks -= ralen; in xfs_bmap_rtalloc()
258 xfs_trans_mod_dquot_byino(ap->tp, ap->ip, in xfs_bmap_rtalloc()
259 ap->wasdel ? XFS_TRANS_DQ_DELRTBCOUNT : in xfs_bmap_rtalloc()
263 if (ap->userdata & XFS_ALLOC_USERDATA_ZERO) { in xfs_bmap_rtalloc()
264 error = xfs_zero_extent(ap->ip, ap->blkno, ap->length); in xfs_bmap_rtalloc()
269 ap->length = 0; in xfs_bmap_rtalloc()