mbox series

[v2,0/5] xfs: scrub filesystem summary counters

Message ID 155563325882.112668.3605935077532891922.stgit@magnolia (mailing list archive)
Headers show
Series xfs: scrub filesystem summary counters | expand

Message

Darrick J. Wong April 19, 2019, 12:20 a.m. UTC
Hi all,

This patch series introduces a totally new filesystem summary counter
online scrub feature.  Whereas previous iterations froze the filesystem
to count inodes and free blocks, this one drastically reduces overhead
by loosening its precision somewhat.  Instead of freezing the fs, we
"locklessly" compute the expected summary counter values using incore
per-AG counters.  Once the expected value is computed, we employ
thresholding to check that the counter values are in the right ballpark
but aren't necessarily exactly correct.

The first patch implements a per-cpu counter of the number of blocks
being held in delayed allocation reservations.  This should represent
the difference between the incore fdblocks counter and the one that
would be recorded on disk if one were to iterate all the committed
metadata structures.

Patch #2 renames some confusingly named functions in xfs_icache.c so
that the file no longer uses "reclaim" when referring to memory
reclamation and garbage collecting of speculative preallocations.

Patch #3 enables the scrub code to pause the posteof and cowblocks
background reclamation workers temporarily to reduce perturbations in
the summary counters while the scrubber runs.  This isn't totally
foolproof since they can be re-armed, but we only need ballpark
correctness.

Patch #4 teaches the AGF and AGI header scrub functions to check the
incore per-AG counters against the on-disk headers.

Finally, patch #5 implements the actual fs summary counter scrubber
code.

If you're going to start using this mess, you probably ought to just
pull from my git trees, which are linked below.

This is an extraordinary way to destroy everything.  Enjoy!
Comments and questions are, as always, welcome.

--D

kernel git tree:
https://git.kernel.org/cgit/linux/kernel/git/djwong/xfs-linux.git/log/?h=scrub-summary-counters

xfsprogs git tree:
https://git.kernel.org/cgit/linux/kernel/git/djwong/xfsprogs-dev.git/log/?h=scrub-summary-counters