Fixes: https://tracker.ceph.com/issues/24491
Signed-off-by: Liu Yangkuan <liuyangkuan@gmail.com>
(cherry picked from commit
97188fef8596f098aa43aa745a217b40a6c29ea4)
Conflicts:
src/client/Client.cc: Resolved in _ll_drop_pins for ldout
void Client::_ll_drop_pins()
{
ldout(cct, 10) << "_ll_drop_pins" << dendl;
+ std::set<InodeRef> to_be_put; //this set will be deconstructed item by item when exit
ceph::unordered_map<vinodeno_t, Inode*>::iterator next;
for (ceph::unordered_map<vinodeno_t, Inode*>::iterator it = inode_map.begin();
it != inode_map.end();
Inode *in = it->second;
next = it;
++next;
- if (in->ll_ref)
+ if (in->ll_ref){
+ to_be_put.insert(in);
_ll_put(in, in->ll_ref);
+ }
}
}