Lines Matching refs:cmap
313 struct xfs_bmbt_irec *cmap, in xfs_find_trim_cow_extent() argument
327 if (!xfs_iext_lookup_extent(ip, ip->i_cowfp, offset_fsb, &icur, cmap)) in xfs_find_trim_cow_extent()
328 cmap->br_startoff = offset_fsb + count_fsb; in xfs_find_trim_cow_extent()
329 if (cmap->br_startoff > offset_fsb) { in xfs_find_trim_cow_extent()
331 cmap->br_startoff - imap->br_startoff); in xfs_find_trim_cow_extent()
336 if (isnullstartblock(cmap->br_startblock)) { in xfs_find_trim_cow_extent()
337 xfs_trim_extent(imap, cmap->br_startoff, cmap->br_blockcount); in xfs_find_trim_cow_extent()
342 xfs_trim_extent(cmap, offset_fsb, count_fsb); in xfs_find_trim_cow_extent()
351 struct xfs_bmbt_irec *cmap, in xfs_reflink_convert_unwritten() argument
361 xfs_trim_extent(cmap, offset_fsb, count_fsb); in xfs_reflink_convert_unwritten()
368 if (!convert_now || cmap->br_state == XFS_EXT_NORM) in xfs_reflink_convert_unwritten()
371 trace_xfs_reflink_convert_cow(ip, cmap); in xfs_reflink_convert_unwritten()
375 cmap->br_state = XFS_EXT_NORM; in xfs_reflink_convert_unwritten()
384 struct xfs_bmbt_irec *cmap, in xfs_reflink_fill_cow_hole() argument
411 error = xfs_find_trim_cow_extent(ip, imap, cmap, shared, &found); in xfs_reflink_fill_cow_hole()
423 XFS_BMAPI_COWFORK | XFS_BMAPI_PREALLOC, 0, cmap, in xfs_reflink_fill_cow_hole()
434 return xfs_reflink_convert_unwritten(ip, imap, cmap, convert_now); in xfs_reflink_fill_cow_hole()
445 struct xfs_bmbt_irec *cmap, in xfs_reflink_fill_delalloc() argument
467 error = xfs_find_trim_cow_extent(ip, imap, cmap, shared, in xfs_reflink_fill_delalloc()
477 ASSERT(isnullstartblock(cmap->br_startblock) || in xfs_reflink_fill_delalloc()
478 cmap->br_startblock == DELAYSTARTBLOCK); in xfs_reflink_fill_delalloc()
484 error = xfs_bmapi_write(tp, ip, cmap->br_startoff, in xfs_reflink_fill_delalloc()
485 cmap->br_blockcount, in xfs_reflink_fill_delalloc()
487 cmap, &nimaps); in xfs_reflink_fill_delalloc()
495 } while (cmap->br_startoff + cmap->br_blockcount <= imap->br_startoff); in xfs_reflink_fill_delalloc()
497 return xfs_reflink_convert_unwritten(ip, imap, cmap, convert_now); in xfs_reflink_fill_delalloc()
509 struct xfs_bmbt_irec *cmap, in xfs_reflink_allocate_cow() argument
523 error = xfs_find_trim_cow_extent(ip, imap, cmap, shared, &found); in xfs_reflink_allocate_cow()
529 return xfs_reflink_convert_unwritten(ip, imap, cmap, in xfs_reflink_allocate_cow()
536 if (cmap->br_startoff > imap->br_startoff) in xfs_reflink_allocate_cow()
537 return xfs_reflink_fill_cow_hole(ip, imap, cmap, shared, in xfs_reflink_allocate_cow()
544 if (isnullstartblock(cmap->br_startblock) || in xfs_reflink_allocate_cow()
545 cmap->br_startblock == DELAYSTARTBLOCK) in xfs_reflink_allocate_cow()
546 return xfs_reflink_fill_delalloc(ip, imap, cmap, shared, in xfs_reflink_allocate_cow()