fsc->frextents = 0;
fsc->frextents_delayed = 0;
- if (!xfs_has_realtime(mp))
+
+ /*
+ * Don't bother verifying and repairing the fs counters for zoned file
+ * systems as they don't track an on-disk frextents count, and the
+ * in-memory percpu counter also includes reservations.
+ */
+ if (!xfs_has_realtime(mp) || xfs_has_zoned(mp))
return 0;
while ((rtg = xfs_rtgroup_next(mp, rtg))) {
try_again = true;
}
- if (!xchk_fscount_within_range(sc, frextents,
- &mp->m_free[FREE_RTEXTENTS],
- fsc->frextents - fsc->frextents_delayed)) {
- if (fsc->frozen)
- xchk_set_corrupt(sc);
- else
- try_again = true;
+ if (!xfs_has_zoned(mp)) {
+ if (!xchk_fscount_within_range(sc, frextents,
+ &mp->m_free[FREE_RTEXTENTS],
+ fsc->frextents - fsc->frextents_delayed)) {
+ if (fsc->frozen)
+ xchk_set_corrupt(sc);
+ else
+ try_again = true;
+ }
}
if (try_again)
* track of the delalloc reservations separately, as they are are
* subtracted from m_frextents, but not included in sb_frextents.
*/
- percpu_counter_set(&mp->m_free[FREE_RTEXTENTS],
- fsc->frextents - fsc->frextents_delayed);
- if (!xfs_has_rtgroups(mp))
- mp->m_sb.sb_frextents = fsc->frextents;
+ if (!xfs_has_zoned(mp)) {
+ percpu_counter_set(&mp->m_free[FREE_RTEXTENTS],
+ fsc->frextents - fsc->frextents_delayed);
+ if (!xfs_has_rtgroups(mp))
+ mp->m_sb.sb_frextents = fsc->frextents;
+ }
return 0;
}