Bug #53724
openmds: stray directories are not purged when all past parents are clear
0%
Description
(Note to experienced CephFS devs: let's save this for a newer dev!)
If a directory is not purged because it has past parents (due to snapshots), then it stays in the stray directory. If that snapshot is later removed, the stray directory will not be purged until the MDS is forcibly restarted (e.g. from `ceph mds fail X`). This happens in:
https://github.com/ceph/ceph/blob/7659877b16284516df102f60f866af9d0fa37bb3/src/mds/MDCache.cc#L9926
The fix to this bug either may be teaching scrub to evaluate all strays in the ~mdsdir or to regularly (~1 min?) evaluate strays.
Be sure to write tests for this. It can be reproduced by limiting the number of files in the stray directories using the configs mds_bal_fragment_size_max and mds_bal_split_size.