.set_default(true)
.set_description("MDS will abort if dentry is detected newly corrupted."),
+ Option("mds_go_bad_corrupt_dentry", Option::TYPE_BOOL, Option::LEVEL_ADVANCED)
+ .set_default(true)
+ .set_flag(Option::FLAG_RUNTIME)
+ .set_description("MDS will mark a corrupt dentry as bad and isolate"),
+
Option("mds_inject_rename_corrupt_dentry_first", Option::TYPE_FLOAT, Option::LEVEL_DEV)
.set_default(0.0)
.set_flag(Option::FLAG_RUNTIME)
} else {
derr << "newly corrupt dentry to be committed: " << *this << dendl;
}
- dir->go_bad_dentry(last, get_name());
+ if (g_conf().get_val<bool>("mds_go_bad_corrupt_dentry")) {
+ dir->go_bad_dentry(last, get_name());
+ }
if (!load && g_conf().get_val<bool>("mds_abort_on_newly_corrupt_dentry")) {
dir->mdcache->mds->clog->error() << "MDS abort because newly corrupt dentry to be committed: " << *this;
ceph_abort("detected newly corrupt dentry"); /* avoid writing out newly corrupted dn */