void CInode::remove_need_snapflush(CInode *snapin, snapid_t snapid, client_t client)
{
dout(10) << "remove_need_snapflush client." << client << " snapid " << snapid << " on " << snapin << dendl;
- set<client_t>& clients = client_need_snapflush[snapid];
- clients.erase(client);
- if (clients.empty()) {
- client_need_snapflush.erase(snapid);
+ map<snapid_t, std::set<client_t> >::iterator p = client_need_snapflush.find(snapid);
+ if (p == client_need_snapflush.end()) {
+ dout(10) << " snapid not found" << dendl;
+ return;
+ }
+ if (!p->second.count(client)) {
+ dout(10) << " client not found" << dendl;
+ return;
+ }
+ p->second.erase(client);
+ if (p->second.empty()) {
+ client_need_snapflush.erase(p);
snapin->auth_unpin(this);
if (client_need_snapflush.empty()) {