Project

General

Profile

Feature #15619

Updated by John Spray almost 8 years ago

If an inode's number is not marked as used in the InoTable, fix that during forward scrub when repair is enabled. 

 This is the case where a system is damaged in such a way that we have an inode with number X, but the inode table also claims that inode number X is free.    When we touch this inode in CInode::validate_disk_state, we can check if the inode number is indeed marked as used in mds->inotable, and if it isn't, and the user has enabled repair (scrub_infop->header->repair) then emit a log message and mark the inode used in the inotable. 

 It should be possible to construct a test within test_forward_scrub.py in ceph-qa-suite, by writing python code that interferes with the system to create this particular bad state (see also test_damage.py where some similar manipulation is done).    You can run those tests on a vstart cluster using the tasks/cephfs/vstart_runner.py script in ceph-qa-suite (there are some notes in vstart_runner.py about how to run it).

Back