deleg_timeout = 0;
if (abort) {
+ mount_aborted = true;
// Abort all mds sessions
_abort_mds_sessions(-ENOTCONN);
return mds_requests.empty();
});
- {
- std::scoped_lock l(timer_lock);
- if (tick_event)
- timer.cancel_event(tick_event);
- tick_event = 0;
- }
-
cwd.reset();
// clean up any unclosed files
traceout.close();
}
+ {
+ std::scoped_lock l(timer_lock);
+ if (tick_event)
+ timer.cancel_event(tick_event);
+ tick_event = 0;
+ }
+
_close_sessions();
mref_writer.update_state(CLIENT_UNMOUNTED);
}
}
- if (mdsmap->get_epoch()) {
+ if (!mount_aborted && mdsmap->get_epoch()) {
// renew caps?
utime_t el = now - last_cap_renew;
if (el > mdsmap->get_session_timeout() / 3.0)
while (!p.end()) {
Inode *in = *p;
++p;
- if (in->hold_caps_until > now)
+ if (!mount_aborted && in->hold_caps_until > now)
break;
delayed_list.pop_front();
- check_caps(in, CHECK_CAPS_NODELAY);
+ if (!mount_aborted)
+ check_caps(in, CHECK_CAPS_NODELAY);
}
- collect_and_send_metrics();
+ if (!mount_aborted)
+ collect_and_send_metrics();
trim_cache(true);
ceph::unordered_set<dir_result_t*> opened_dirs;
uint64_t fd_gen = 1;
+ bool mount_aborted = false;
bool blocklisted = false;
ceph::unordered_map<vinodeno_t, Inode*> inode_map;