~RemountTest() override {}
void *entry() override {
#if defined(__linux__)
- int ver = get_linux_version();
- ceph_assert(ver != 0);
- bool client_try_dentry_invalidate = g_conf().get_val<bool>(
- "client_try_dentry_invalidate");
- bool can_invalidate_dentries =
- client_try_dentry_invalidate && ver < KERNEL_VERSION(3, 18, 0);
- auto test_result = client->test_dentry_handling(can_invalidate_dentries);
- int tr = test_result.first;
+ bool can_invalidate_dentries = g_conf().get_val<bool>(
+ "client_try_dentry_invalidate");
+ uint64_t max_retries = g_conf().get_val<uint64_t>(
+ "client_max_retries_on_remount_failure");
+ std::pair<int, bool> test_result;
+ uint64_t i = 0;
+ int tr = 0;
+ do {
+ test_result = client->test_dentry_handling(can_invalidate_dentries);
+ tr = test_result.first;
+ if (tr) {
+ sleep(1);
+ }
+ } while (++i < max_retries && tr);
+
bool abort_on_failure = test_result.second;
bool client_die_on_failed_dentry_invalidate = g_conf().get_val<bool>(
"client_die_on_failed_dentry_invalidate");