From: Patrick Donnelly Date: Thu, 7 Jul 2016 01:48:48 +0000 (-0400) Subject: client: move Inode specific cleanup to destructor X-Git-Tag: ses5-milestone5~402^2 X-Git-Url: http://git-server-git.apps.pok.os.sepia.ceph.com/?a=commitdiff_plain;h=58439ad09a565e0c74667144738d7dd8bb6643bf;p=ceph.git client: move Inode specific cleanup to destructor This better internalizes Inode management. Signed-off-by: Patrick Donnelly --- diff --git a/src/client/Client.cc b/src/client/Client.cc index a4758c228500..e6b5e555c990 100644 --- a/src/client/Client.cc +++ b/src/client/Client.cc @@ -2831,9 +2831,6 @@ void Client::put_inode(Inode *in, int n) if (use_faked_inos()) _release_faked_ino(in); - in->cap_item.remove_myself(); - in->snaprealm_item.remove_myself(); - in->snapdir_parent.reset(); if (in == root) { root = 0; root_ancestor = 0; @@ -2841,14 +2838,6 @@ void Client::put_inode(Inode *in, int n) root_parents.erase(root_parents.begin()); } - 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; } } diff --git a/src/client/Inode.cc b/src/client/Inode.cc index 8770c8693b24..68446e7deefa 100644 --- a/src/client/Inode.cc +++ b/src/client/Inode.cc @@ -9,6 +9,24 @@ #include "ClientSnapRealm.h" #include "UserGroups.h" +#include "mds/flock.h" + +Inode::~Inode() +{ + cap_item.remove_myself(); + snaprealm_item.remove_myself(); + snapdir_parent.reset(); + + if (!oset.objects.empty()) { + lsubdout(client->cct, client, 0) << __func__ << ": leftover objects on inode 0x" + << std::hex << ino << std::dec << dendl; + assert(oset.objects.empty()); + } + + delete fcntl_locks; + delete flock_locks; +} + ostream& operator<<(ostream &out, const Inode &in) { out << in.vino() << "(" diff --git a/src/client/Inode.h b/src/client/Inode.h index 5398c68c41f6..481ec8cad249 100644 --- a/src/client/Inode.h +++ b/src/client/Inode.h @@ -244,7 +244,7 @@ struct Inode { memset(&dir_layout, 0, sizeof(dir_layout)); memset("a, 0, sizeof(quota)); } - ~Inode() { } + ~Inode(); vinodeno_t vino() const { return vinodeno_t(ino, snapid); }