Lines Matching refs:info

161 	struct xfs_perag	*pag;		/* AG info, if applicable */
184 struct xfs_getfsmap_info *info);
203 struct xfs_getfsmap_info *info,
217 if (!info->pag)
222 cur = xfs_refcountbt_init_cursor(mp, tp, info->agf_bp, info->pag);
239 struct xfs_getfsmap_info *info)
245 rec = &info->fsmap_recs[info->head->fmh_entries++];
251 struct xfs_getfsmap_info *info,
255 if (info->low_daddr != -1ULL)
256 return rec_daddr < info->low_daddr;
257 if (info->low.rm_blockcount)
258 return xfs_rmap_compare(rec, &info->low) < 0;
270 struct xfs_getfsmap_info *info,
290 if (xfs_getfsmap_rec_before_start(info, rec, rec_daddr)) {
292 if (info->next_daddr < rec_daddr)
293 info->next_daddr = rec_daddr;
298 if (info->head->fmh_count == 0) {
299 if (info->head->fmh_entries == UINT_MAX)
302 if (rec_daddr > info->next_daddr)
303 info->head->fmh_entries++;
305 if (info->last)
308 info->head->fmh_entries++;
311 if (info->next_daddr < rec_daddr)
312 info->next_daddr = rec_daddr;
321 if (rec_daddr > info->next_daddr) {
322 if (info->head->fmh_entries >= info->head->fmh_count)
325 fmr.fmr_device = info->dev;
326 fmr.fmr_physical = info->next_daddr;
327 fmr.fmr_owner = info->missing_owner;
329 fmr.fmr_length = rec_daddr - info->next_daddr;
331 xfs_getfsmap_format(mp, &fmr, info);
334 if (info->last)
338 if (info->head->fmh_entries >= info->head->fmh_count)
341 trace_xfs_fsmap_mapping(mp, info->dev,
342 info->pag ? info->pag->pag_agno : NULLAGNUMBER, rec);
344 fmr.fmr_device = info->dev;
358 error = xfs_getfsmap_is_shared(tp, info, rec, &shared);
365 xfs_getfsmap_format(mp, &fmr, info);
368 if (info->next_daddr < rec_daddr)
369 info->next_daddr = rec_daddr;
381 struct xfs_getfsmap_info *info = priv;
388 return xfs_getfsmap_helper(cur->bc_tp, info, rec, rec_daddr, 0);
399 struct xfs_getfsmap_info *info = priv;
412 return xfs_getfsmap_helper(cur->bc_tp, info, &irec, rec_daddr, 0);
435 struct xfs_getfsmap_info *info)
452 info->low_daddr = XFS_FSB_TO_BB(mp, start_fsb);
454 trace_xfs_fsmap_low_key_linear(mp, info->dev, start_fsb);
455 trace_xfs_fsmap_high_key_linear(mp, info->dev, end_fsb);
469 return xfs_getfsmap_helper(tp, info, &rmap, rec_daddr, len_daddr);
481 struct xfs_getfsmap_info *info = priv;
498 return xfs_getfsmap_helper(tp, info, &irec, rec_daddr, len_daddr);
506 struct xfs_getfsmap_info *info)
524 info->missing_owner = XFS_FMR_OWN_UNKNOWN;
528 info->low_daddr = XFS_FSB_TO_BB(mp, start_rtb);
529 if (info->low_daddr >= eofs)
533 trace_xfs_fsmap_low_key_linear(mp, info->dev, start_rtb);
534 trace_xfs_fsmap_high_key_linear(mp, info->dev, end_rtb);
548 xfs_getfsmap_rtdev_rtbitmap_helper, info);
556 info->last = true;
559 error = xfs_getfsmap_rtdev_rtbitmap_helper(mp, tp, &ahigh, info);
586 struct xfs_getfsmap_info *info,
614 info->low.rm_offset = XFS_BB_TO_FSBT(mp, keys[0].fmr_offset);
615 error = xfs_fsmap_owner_to_rmap(&info->low, &keys[0]);
618 info->low.rm_blockcount = XFS_BB_TO_FSBT(mp, keys[0].fmr_length);
619 xfs_getfsmap_set_irec_flags(&info->low, &keys[0]);
622 if (info->low.rm_blockcount == 0) {
624 } else if (rmap_not_shareable(mp, &info->low)) {
626 info->low.rm_owner = 0;
627 info->low.rm_offset = 0;
629 start_fsb += info->low.rm_blockcount;
634 info->low.rm_offset += info->low.rm_blockcount;
636 info->low.rm_startblock = XFS_FSB_TO_AGBNO(mp, start_fsb);
638 info->high.rm_startblock = -1U;
639 info->high.rm_owner = ULLONG_MAX;
640 info->high.rm_offset = ULLONG_MAX;
641 info->high.rm_blockcount = 0;
642 info->high.rm_flags = XFS_RMAP_KEY_FLAGS | XFS_RMAP_REC_FLAGS;
652 info->pag = pag;
654 info->high.rm_startblock = XFS_FSB_TO_AGBNO(mp,
656 info->high.rm_offset = XFS_BB_TO_FSBT(mp,
658 error = xfs_fsmap_owner_to_rmap(&info->high, &keys[1]);
661 xfs_getfsmap_set_irec_flags(&info->high, &keys[1]);
667 xfs_trans_brelse(tp, info->agf_bp);
668 info->agf_bp = NULL;
671 error = xfs_alloc_read_agf(pag, tp, 0, &info->agf_bp);
675 trace_xfs_fsmap_low_key(mp, info->dev, pag->pag_agno,
676 &info->low);
677 trace_xfs_fsmap_high_key(mp, info->dev, pag->pag_agno,
678 &info->high);
680 error = query_fn(tp, info, &bt_cur, priv);
689 memset(&info->low, 0, sizeof(info->low));
697 info->last = true;
698 error = query_fn(tp, info, &bt_cur, priv);
702 info->pag = NULL;
708 if (info->agf_bp) {
709 xfs_trans_brelse(tp, info->agf_bp);
710 info->agf_bp = NULL;
712 if (info->pag) {
713 xfs_perag_rele(info->pag);
714 info->pag = NULL;
727 struct xfs_getfsmap_info *info,
732 if (info->last)
733 return xfs_getfsmap_datadev_helper(*curpp, &info->high, info);
736 *curpp = xfs_rmapbt_init_cursor(tp->t_mountp, tp, info->agf_bp,
737 info->pag);
738 return xfs_rmap_query_range(*curpp, &info->low, &info->high,
739 xfs_getfsmap_datadev_helper, info);
747 struct xfs_getfsmap_info *info)
749 info->missing_owner = XFS_FMR_OWN_FREE;
750 return __xfs_getfsmap_datadev(tp, keys, info,
758 struct xfs_getfsmap_info *info,
765 if (info->last)
766 return xfs_getfsmap_datadev_bnobt_helper(*curpp, &key[1], info);
769 *curpp = xfs_allocbt_init_cursor(tp->t_mountp, tp, info->agf_bp,
770 info->pag, XFS_BTNUM_BNO);
771 key->ar_startblock = info->low.rm_startblock;
772 key[1].ar_startblock = info->high.rm_startblock;
774 xfs_getfsmap_datadev_bnobt_helper, info);
782 struct xfs_getfsmap_info *info)
787 info->missing_owner = XFS_FMR_OWN_UNKNOWN;
788 return __xfs_getfsmap_datadev(tp, keys, info,
891 struct xfs_getfsmap_info info = { NULL };
950 info.next_daddr = head->fmh_keys[0].fmr_physical +
952 info.fsmap_recs = fsmap_recs;
953 info.head = head;
986 info.dev = handlers[i].dev;
987 info.last = false;
988 info.pag = NULL;
989 info.low_daddr = -1ULL;
990 info.low.rm_blockcount = 0;
991 error = handlers[i].fn(tp, dkeys, &info);
996 info.next_daddr = 0;