fetch.getxattr("parent", bt, bt_r);
in->mdcache->mds->objecter->read(oid, object_locator_t(pool), fetch, CEPH_NOSNAP,
NULL, 0, fin);
- if (in->mdcache->mds->logger)
+ if (in->mdcache->mds->logger) {
in->mdcache->mds->logger->inc(l_mds_openino_backtrace_fetch);
+ in->mdcache->mds->logger->inc(l_mds_scrub_backtrace_fetch);
+ }
using ceph::encode;
if (!is_internal) {
in->mdcache->mds->objecter->mutate(oid, object_locator_t(pool), scrub_tag, snapc,
ceph::real_clock::now(),
0, NULL);
+ if (in->mdcache->mds->logger)
+ in->mdcache->mds->logger->inc(l_mds_scrub_set_tag);
}
}
false);
// Flag that we repaired this BT so that it won't go into damagetable
results->backtrace.repaired = true;
+ if (in->mdcache->mds->logger)
+ in->mdcache->mds->logger->inc(l_mds_scrub_backtrace_repaired);
}
// If the inode's number was free in the InoTable, fix that
clog->error() << "inode table repaired for inode: " << in->ino();
inotable->save();
+ if (in->mdcache->mds->logger)
+ in->mdcache->mds->logger->inc(l_mds_scrub_inotable_repaired);
} else {
clog->error() << "Cannot repair inotable while other operations"
" are in progress";
if (in->is_dir()) {
+ if (in->mdcache->mds->logger)
+ in->mdcache->mds->logger->inc(l_mds_scrub_dir_inodes);
return validate_directory_data();
} else {
+ if (in->mdcache->mds->logger)
+ in->mdcache->mds->logger->inc(l_mds_scrub_file_inodes);
// TODO: validate on-disk inode for normal files
return true;
}
in->mdcache->num_shadow_inodes++;
}
shadow_in->fetch(get_internal_callback(INODE));
+ if (in->mdcache->mds->logger)
+ in->mdcache->mds->logger->inc(l_mds_scrub_dir_base_inodes);
return false;
} else {
// TODO: validate on-disk inode for non-base directories
+ if (in->mdcache->mds->logger)
+ in->mdcache->mds->logger->inc(l_mds_scrub_dirfrag_rstats);
results->inode.passed = true;
return check_dirfrag_rstats();
}
mds_plb.add_u64_counter(l_mds_openino_peer_discover, "openino_peer_discover",
"OpenIno peer inode discovers");
+ // scrub stats
+ mds_plb.add_u64(l_mds_scrub_backtrace_fetch, "scrub_backtrace_fetch",
+ "Scrub backtrace fetchings");
+ mds_plb.add_u64(l_mds_scrub_set_tag, "scrub_set_tag",
+ "Scrub set tags");
+ mds_plb.add_u64(l_mds_scrub_backtrace_repaired, "scrub_backtrace_repaired",
+ "Scrub backtraces repaired");
+ mds_plb.add_u64(l_mds_scrub_inotable_repaired, "scrub_inotable_repaired",
+ "Scrub inotable repaired");
+ mds_plb.add_u64(l_mds_scrub_dir_inodes, "scrub_dir_inodes",
+ "Scrub directory inodes");
+ mds_plb.add_u64(l_mds_scrub_dir_base_inodes, "scrub_dir_base_inodes",
+ "Scrub directory base inodes");
+ mds_plb.add_u64(l_mds_scrub_dirfrag_rstats, "scrub_dirfrag_rstats",
+ "Scrub dirfrags rstates");
+ mds_plb.add_u64(l_mds_scrub_file_inodes, "scrub_file_inodes",
+ "Scrub file inodes");
+
logger = mds_plb.create_perf_counters();
g_ceph_context->get_perfcounters_collection()->add(logger);
}
l_mds_root_rfiles,
l_mds_root_rbytes,
l_mds_root_rsnaps,
+ l_mds_scrub_backtrace_fetch,
+ l_mds_scrub_set_tag,
+ l_mds_scrub_backtrace_repaired,
+ l_mds_scrub_inotable_repaired,
+ l_mds_scrub_dir_inodes,
+ l_mds_scrub_dir_base_inodes,
+ l_mds_scrub_dirfrag_rstats,
+ l_mds_scrub_file_inodes,
l_mdss_handle_inode_file_caps,
l_mdss_ceph_cap_op_revoke,
l_mdss_ceph_cap_op_grant,