}
-ClientLease *CDentry::add_client_lease(client_t c, int mask)
+ClientLease *CDentry::add_client_lease(client_t c, int mask, Session *session)
{
ClientLease *l;
if (client_lease_map.count(c))
if (client_lease_map.empty())
get(PIN_CLIENTLEASE);
l = client_lease_map[c] = new ClientLease(c, this);
+ l->seq = ++session->lease_seq;
}
int adding = ~l->mask & mask;
class CDentry;
class LogSegment;
+class Session;
return 0;
}
- ClientLease *add_client_lease(client_t c, int mask);
+ ClientLease *add_client_lease(client_t c, int mask, Session *session);
int remove_client_lease(ClientLease *r, int mask, class Locker *locker); // returns remaining mask (if any), and kicks locker eval_gathers
e.mask = 1;
if (mask) {
- ClientLease *l = dn->add_client_lease(client, mask);
+ ClientLease *l = dn->add_client_lease(client, mask, session);
session->touch_lease(l);
e.seq = ++l->seq;
leases.push_back(&r->item_session_lease);
}
+ // -- leases --
+ uint32_t lease_seq;
+
// -- completed requests --
private:
set<tid_t> completed_requests;
state(STATE_CLOSED), state_seq(0), importing_count(0),
connection(NULL), item_session_list(this),
requests(0), // member_offset passed to front() manually
- cap_push_seq(0) { }
+ cap_push_seq(0),
+ lease_seq(0) { }
~Session() {
assert(!item_session_list.is_on_list());
}