We were setting it to 1 (due to the issue_norevoke() call), but the
client is resetting to 0, so do the same here. (Otherwise
subsequent client cap messages may get ignored.)
it++) {
if (it != in.get_client_caps().begin()) out << ",";
out << it->first << "=" << ccap_string(it->second->issued())
- << "/" << ccap_string(it->second->wanted());
+ << "/" << ccap_string(it->second->wanted())
+ << "@" << it->second->get_last_sent();
}
out << "}";
if (in.get_loner() >= 0)
Capability *reconnect_cap(int client, ceph_mds_cap_reconnect& icr, Session *session) {
Capability *cap = get_client_cap(client);
if (cap) {
+ // FIXME?
cap->merge(icr.wanted, icr.issued);
} else {
cap = add_client_cap(client, session);
cap->set_wanted(icr.wanted);
cap->issue_norevoke(icr.issued);
+ cap->reset_seq();
}
cap->set_cap_id(icr.cap_id);
cap->set_last_issue_stamp(g_clock.recent_now());
ceph_seq_t get_last_seq() { return last_sent; }
ceph_seq_t get_last_issue() { return last_issue; }
+ void reset_seq() {
+ last_sent = 0;
+ last_issue = 0;
+ }
// -- exports --
Export make_export() {