From: Sage Weil Date: Fri, 19 Dec 2014 15:45:02 +0000 (-0800) Subject: Merge remote-tracking branch 'gh/wip-fs-quota' X-Git-Tag: v0.91~21 X-Git-Url: http://git-server-git.apps.pok.os.sepia.ceph.com/?a=commitdiff_plain;h=0a25bee53951bbac3cadbcccbc59068342e166e8;p=ceph.git Merge remote-tracking branch 'gh/wip-fs-quota' Conflicts: src/client/Client.cc --- 0a25bee53951bbac3cadbcccbc59068342e166e8 diff --cc src/client/Client.cc index 0a0dc85b6514,4048b3007202..11222b4d90c4 --- a/src/client/Client.cc +++ b/src/client/Client.cc @@@ -47,7 -47,8 +47,8 @@@ using namespace std #include "messages/MClientLease.h" #include "messages/MClientSnap.h" #include "messages/MCommandReply.h" +#include "messages/MOSDMap.h" + #include "messages/MClientQuota.h" #include "messages/MGenericMessage.h" @@@ -2409,15 -2359,15 +2436,22 @@@ void Client::put_inode(Inode *in, int n 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;