Lines Matching full:rs

147 static inline bool xreap_dirty(const struct xreap_state *rs)  in xreap_dirty()  argument
149 if (rs->force_roll) in xreap_dirty()
151 if (rs->deferred) in xreap_dirty()
153 if (rs->invalidated) in xreap_dirty()
155 if (rs->total_deferred) in xreap_dirty()
168 static inline bool xreap_want_roll(const struct xreap_state *rs) in xreap_want_roll() argument
170 if (rs->force_roll) in xreap_want_roll()
172 if (rs->deferred > XREP_MAX_ITRUNCATE_EFIS) in xreap_want_roll()
174 if (rs->invalidated > XREAP_MAX_BINVAL) in xreap_want_roll()
179 static inline void xreap_reset(struct xreap_state *rs) in xreap_reset() argument
181 rs->total_deferred += rs->deferred; in xreap_reset()
182 rs->deferred = 0; in xreap_reset()
183 rs->invalidated = 0; in xreap_reset()
184 rs->force_roll = false; in xreap_reset()
197 xreap_want_defer_finish(const struct xreap_state *rs) in xreap_want_defer_finish() argument
199 if (rs->force_roll) in xreap_want_defer_finish()
201 if (rs->total_deferred > XREAP_MAX_DEFER_CHAIN) in xreap_want_defer_finish()
206 static inline void xreap_defer_finish_reset(struct xreap_state *rs) in xreap_defer_finish_reset() argument
208 rs->total_deferred = 0; in xreap_defer_finish_reset()
209 rs->deferred = 0; in xreap_defer_finish_reset()
210 rs->invalidated = 0; in xreap_defer_finish_reset()
211 rs->force_roll = false; in xreap_defer_finish_reset()
259 struct xreap_state *rs, in xreap_agextent_binval() argument
263 struct xfs_scrub *sc = rs->sc; in xreap_agextent_binval()
297 rs->invalidated++; in xreap_agextent_binval()
304 if (rs->invalidated > XREAP_MAX_BINVAL) { in xreap_agextent_binval()
325 struct xreap_state *rs, in xreap_agextent_select() argument
331 struct xfs_scrub *sc = rs->sc; in xreap_agextent_select()
343 error = xfs_rmap_has_other_keys(cur, agbno, 1, rs->oinfo, in xreap_agextent_select()
349 if (rs->resv == XFS_AG_RESV_AGFL) in xreap_agextent_select()
359 error = xfs_rmap_has_other_keys(cur, bno, 1, rs->oinfo, in xreap_agextent_select()
385 struct xreap_state *rs, in xreap_agextent_iter() argument
390 struct xfs_scrub *sc = rs->sc; in xreap_agextent_iter()
412 rs->force_roll = true; in xreap_agextent_iter()
414 if (rs->oinfo == &XFS_RMAP_OINFO_COW) { in xreap_agextent_iter()
425 *aglenp, rs->oinfo); in xreap_agextent_iter()
436 xreap_agextent_binval(rs, agbno, aglenp); in xreap_agextent_iter()
438 ASSERT(xreap_want_roll(rs)); in xreap_agextent_iter()
449 if (rs->oinfo == &XFS_RMAP_OINFO_COW) { in xreap_agextent_iter()
450 ASSERT(rs->resv == XFS_AG_RESV_NONE); in xreap_agextent_iter()
454 rs->resv, XFS_FREE_EXTENT_SKIP_DISCARD); in xreap_agextent_iter()
458 rs->force_roll = true; in xreap_agextent_iter()
463 if (rs->resv == XFS_AG_RESV_AGFL) { in xreap_agextent_iter()
469 rs->force_roll = true; in xreap_agextent_iter()
479 error = xfs_free_extent_later(sc->tp, fsbno, *aglenp, rs->oinfo, in xreap_agextent_iter()
480 rs->resv, XFS_FREE_EXTENT_SKIP_DISCARD); in xreap_agextent_iter()
484 rs->deferred++; in xreap_agextent_iter()
485 if (rs->deferred % 2 == 0) in xreap_agextent_iter()
500 struct xreap_state *rs = priv; in xreap_agmeta_extent() local
501 struct xfs_scrub *sc = rs->sc; in xreap_agmeta_extent()
512 error = xreap_agextent_select(rs, agbno, agbno_next, in xreap_agmeta_extent()
517 error = xreap_agextent_iter(rs, agbno, &aglen, crosslinked); in xreap_agmeta_extent()
521 if (xreap_want_defer_finish(rs)) { in xreap_agmeta_extent()
525 xreap_defer_finish_reset(rs); in xreap_agmeta_extent()
526 } else if (xreap_want_roll(rs)) { in xreap_agmeta_extent()
530 xreap_reset(rs); in xreap_agmeta_extent()
547 struct xreap_state rs = { in xrep_reap_agblocks() local
557 error = xagb_bitmap_walk(bitmap, xreap_agmeta_extent, &rs); in xrep_reap_agblocks()
561 if (xreap_dirty(&rs)) in xrep_reap_agblocks()
578 struct xreap_state *rs = priv; in xreap_fsmeta_extent() local
579 struct xfs_scrub *sc = rs->sc; in xreap_fsmeta_extent()
605 error = xreap_agextent_select(rs, agbno, agbno_next, in xreap_fsmeta_extent()
610 error = xreap_agextent_iter(rs, agbno, &aglen, crosslinked); in xreap_fsmeta_extent()
614 if (xreap_want_defer_finish(rs)) { in xreap_fsmeta_extent()
622 xreap_defer_finish_reset(rs); in xreap_fsmeta_extent()
623 } else if (xreap_want_roll(rs)) { in xreap_fsmeta_extent()
634 xreap_reset(rs); in xreap_fsmeta_extent()
659 struct xreap_state rs = { in xrep_reap_fsblocks() local
669 error = xfsb_bitmap_walk(bitmap, xreap_fsmeta_extent, &rs); in xrep_reap_fsblocks()
673 if (xreap_dirty(&rs)) in xrep_reap_fsblocks()