#include "messages/MClientLease.h"
#include "messages/MClientSnap.h"
#include "messages/MCommandReply.h"
+#include "messages/MOSDMap.h"
+ #include "messages/MClientQuota.h"
#include "messages/MGenericMessage.h"
inode_map.erase(in->vino());
in->cap_item.remove_myself();
in->snaprealm_item.remove_myself();
- if (in == root)
+ if (in == root) {
root = 0;
+ root_ancestor = 0;
+ while (!root_parents.empty()) {
+ Inode *in = root_parents.begin()->second;
+ root_parents.erase(root_parents.begin());
+ put_inode(in);
+ }
+ }
+
+ if (!in->oset.objects.empty()) {
+ ldout(cct, 0) << __func__ << ": leftover objects on inode 0x"
+ << std::hex << in->ino << std::dec << dendl;
+ assert(in->oset.objects.empty());
+ }
+
delete in->fcntl_locks;
delete in->flock_locks;
delete in;