diff --git a/overlay.d/05core/usr/lib/dracut/modules.d/40ignition-ostree/ignition-ostree-transposefs.sh b/overlay.d/05core/usr/lib/dracut/modules.d/40ignition-ostree/ignition-ostree-transposefs.sh index 6f89c4007e..3ba12a6602 100755 --- a/overlay.d/05core/usr/lib/dracut/modules.d/40ignition-ostree/ignition-ostree-transposefs.sh +++ b/overlay.d/05core/usr/lib/dracut/modules.d/40ignition-ostree/ignition-ostree-transposefs.sh @@ -139,13 +139,20 @@ should_autosave_rootfs() { return fi local agcount + # We want to run xfs_info on the unmounted filesystem, because actually just + # even mounting an XFS filesystem that has grown an excessive number of allocation groups + # can be very slow. eval $(xfs_info "${root_part}" | grep -o 'agcount=[0-9]*') - # Semi-arbitrarily chosen: this is roughly ~64G currently (based on initial - # ag sizing at build time) which seems like a good rootfs size at which to + # This is roughly ~700GiB currently (based on initial ag sizing at build time) which + # seems like a good rootfs size at which to # discriminate between "throwaway/short-lived systems" and "long-running - # workload systems". It's not like XFS performance is way worse at 128. - if [ "$agcount" -lt 128 ]; then - echo "Filesystem agcount is $agcount; skipping" >&2 + # workload systems". Specifically for e.g. OpenShift, it's below the default node + # sizes. + local threshold + threshold=400 + echo "${root_part} agcount=$agcount" >&2 + if [ "$agcount" -lt "${threshold}" ]; then + echo "agcount=$agcount is lower than threshold=${threshold}" echo 0 return fi