We want to ensure that removal takes place in the correct locking context,
not whatever context the ::item is destroyed in.
item(T i) : _item(i), _prev(0), _next(0), _list(0) {}
~item() {
- remove_myself();
+ assert(!is_on_xlist());
+ //remove_myself();
}
// no copying!
item(const item& other);
if (rc == 0) {
dout(20) << "removing lease for client" << l->client << dendl;
client_lease_map.erase(l->client);
+ l->lease_item.remove_myself();
+ l->session_lease_item.remove_myself();
delete l;
if (client_lease_map.empty())
put(PIN_CLIENTLEASE);