Lines Matching full:rs

151 static inline bool xreap_dirty(const struct xreap_state *rs)  in xreap_dirty()  argument
153 if (rs->force_roll) in xreap_dirty()
155 if (rs->deferred) in xreap_dirty()
157 if (rs->invalidated) in xreap_dirty()
159 if (rs->total_deferred) in xreap_dirty()
172 static inline bool xreap_want_roll(const struct xreap_state *rs) in xreap_want_roll() argument
174 if (rs->force_roll) in xreap_want_roll()
176 if (rs->deferred > XREP_MAX_ITRUNCATE_EFIS) in xreap_want_roll()
178 if (rs->invalidated > XREAP_MAX_BINVAL) in xreap_want_roll()
183 static inline void xreap_reset(struct xreap_state *rs) in xreap_reset() argument
185 rs->total_deferred += rs->deferred; in xreap_reset()
186 rs->deferred = 0; in xreap_reset()
187 rs->invalidated = 0; in xreap_reset()
188 rs->force_roll = false; in xreap_reset()
201 xreap_want_defer_finish(const struct xreap_state *rs) in xreap_want_defer_finish() argument
203 if (rs->force_roll) in xreap_want_defer_finish()
205 if (rs->total_deferred > XREAP_MAX_DEFER_CHAIN) in xreap_want_defer_finish()
210 static inline void xreap_defer_finish_reset(struct xreap_state *rs) in xreap_defer_finish_reset() argument
212 rs->total_deferred = 0; in xreap_defer_finish_reset()
213 rs->deferred = 0; in xreap_defer_finish_reset()
214 rs->invalidated = 0; in xreap_defer_finish_reset()
215 rs->force_roll = false; in xreap_defer_finish_reset()
263 struct xreap_state *rs, in xreap_agextent_binval() argument
267 struct xfs_scrub *sc = rs->sc; in xreap_agextent_binval()
300 rs->invalidated++; in xreap_agextent_binval()
307 if (rs->invalidated > XREAP_MAX_BINVAL) { in xreap_agextent_binval()
328 struct xreap_state *rs, in xreap_agextent_select() argument
334 struct xfs_scrub *sc = rs->sc; in xreap_agextent_select()
346 error = xfs_rmap_has_other_keys(cur, agbno, 1, rs->oinfo, in xreap_agextent_select()
352 if (rs->resv == XFS_AG_RESV_AGFL) in xreap_agextent_select()
362 error = xfs_rmap_has_other_keys(cur, bno, 1, rs->oinfo, in xreap_agextent_select()
389 struct xreap_state *rs, in xreap_agextent_iter() argument
394 struct xfs_scrub *sc = rs->sc; in xreap_agextent_iter()
398 ASSERT(rs->resv != XFS_AG_RESV_METAFILE); in xreap_agextent_iter()
419 rs->force_roll = true; in xreap_agextent_iter()
421 if (rs->oinfo == &XFS_RMAP_OINFO_COW) { in xreap_agextent_iter()
433 *aglenp, rs->oinfo); in xreap_agextent_iter()
444 xreap_agextent_binval(rs, agbno, aglenp); in xreap_agextent_iter()
446 ASSERT(xreap_want_roll(rs)); in xreap_agextent_iter()
457 if (rs->oinfo == &XFS_RMAP_OINFO_COW) { in xreap_agextent_iter()
458 ASSERT(rs->resv == XFS_AG_RESV_NONE); in xreap_agextent_iter()
462 rs->resv, XFS_FREE_EXTENT_SKIP_DISCARD); in xreap_agextent_iter()
466 rs->force_roll = true; in xreap_agextent_iter()
471 if (rs->resv == XFS_AG_RESV_AGFL) { in xreap_agextent_iter()
477 rs->force_roll = true; in xreap_agextent_iter()
487 error = xfs_free_extent_later(sc->tp, fsbno, *aglenp, rs->oinfo, in xreap_agextent_iter()
488 rs->resv, XFS_FREE_EXTENT_SKIP_DISCARD); in xreap_agextent_iter()
492 rs->deferred++; in xreap_agextent_iter()
493 if (rs->deferred % 2 == 0) in xreap_agextent_iter()
508 struct xreap_state *rs = priv; in xreap_agmeta_extent() local
509 struct xfs_scrub *sc = rs->sc; in xreap_agmeta_extent()
520 error = xreap_agextent_select(rs, agbno, agbno_next, in xreap_agmeta_extent()
525 error = xreap_agextent_iter(rs, agbno, &aglen, crosslinked); in xreap_agmeta_extent()
529 if (xreap_want_defer_finish(rs)) { in xreap_agmeta_extent()
533 xreap_defer_finish_reset(rs); in xreap_agmeta_extent()
534 } else if (xreap_want_roll(rs)) { in xreap_agmeta_extent()
538 xreap_reset(rs); in xreap_agmeta_extent()
555 struct xreap_state rs = { in xrep_reap_agblocks() local
565 error = xagb_bitmap_walk(bitmap, xreap_agmeta_extent, &rs); in xrep_reap_agblocks()
569 if (xreap_dirty(&rs)) in xrep_reap_agblocks()
586 struct xreap_state *rs = priv; in xreap_fsmeta_extent() local
587 struct xfs_scrub *sc = rs->sc; in xreap_fsmeta_extent()
613 error = xreap_agextent_select(rs, agbno, agbno_next, in xreap_fsmeta_extent()
618 error = xreap_agextent_iter(rs, agbno, &aglen, crosslinked); in xreap_fsmeta_extent()
622 if (xreap_want_defer_finish(rs)) { in xreap_fsmeta_extent()
630 xreap_defer_finish_reset(rs); in xreap_fsmeta_extent()
631 } else if (xreap_want_roll(rs)) { in xreap_fsmeta_extent()
642 xreap_reset(rs); in xreap_fsmeta_extent()
667 struct xreap_state rs = { in xrep_reap_fsblocks() local
677 error = xfsb_bitmap_walk(bitmap, xreap_fsmeta_extent, &rs); in xrep_reap_fsblocks()
681 if (xreap_dirty(&rs)) in xrep_reap_fsblocks()
695 struct xreap_state *rs, in xreap_rgextent_select() argument
701 struct xfs_scrub *sc = rs->sc; in xreap_rgextent_select()
712 error = xfs_rmap_has_other_keys(cur, rgbno, 1, rs->oinfo, in xreap_rgextent_select()
724 error = xfs_rmap_has_other_keys(cur, bno, 1, rs->oinfo, in xreap_rgextent_select()
750 struct xreap_state *rs, in xreap_rgextent_iter() argument
755 struct xfs_scrub *sc = rs->sc; in xreap_rgextent_iter()
764 if (rs->oinfo != &XFS_RMAP_OINFO_COW) { in xreap_rgextent_iter()
765 ASSERT(rs->oinfo == &XFS_RMAP_OINFO_COW); in xreap_rgextent_iter()
768 ASSERT(rs->resv == XFS_AG_RESV_NONE); in xreap_rgextent_iter()
781 rs->deferred++; in xreap_rgextent_iter()
796 rs->resv, in xreap_rgextent_iter()
802 rs->deferred++; in xreap_rgextent_iter()
821 struct xreap_state *rs = priv; in xreap_rtmeta_extent() local
822 struct xfs_scrub *sc = rs->sc; in xreap_rtmeta_extent()
844 error = xreap_rgextent_select(rs, rgbno, rgbno_next, in xreap_rtmeta_extent()
849 error = xreap_rgextent_iter(rs, rgbno, &rglen, crosslinked); in xreap_rtmeta_extent()
853 if (xreap_want_defer_finish(rs)) { in xreap_rtmeta_extent()
857 xreap_defer_finish_reset(rs); in xreap_rtmeta_extent()
858 } else if (xreap_want_roll(rs)) { in xreap_rtmeta_extent()
862 xreap_reset(rs); in xreap_rtmeta_extent()
885 struct xreap_state rs = { in xrep_reap_rtblocks() local
895 error = xrtb_bitmap_walk(bitmap, xreap_rtmeta_extent, &rs); in xrep_reap_rtblocks()
899 if (xreap_dirty(&rs)) in xrep_reap_rtblocks()
921 struct xreap_state rs = { in xrep_reap_metadir_fsblocks() local
934 error = xfsb_bitmap_walk(bitmap, xreap_fsmeta_extent, &rs); in xrep_reap_metadir_fsblocks()
938 if (xreap_dirty(&rs)) in xrep_reap_metadir_fsblocks()