From 920ea85ad18e5b1e1d074a92ec6a9d359324fa8d Mon Sep 17 00:00:00 2001 From: Patrick Donnelly Date: Mon, 15 Jan 2018 08:28:27 -0800 Subject: [PATCH] mds: move CDentry container members to mempool Partial-fix: http://tracker.ceph.com/issues/21402 Signed-off-by: Patrick Donnelly --- src/mds/CDentry.cc | 2 +- src/mds/CDentry.h | 22 +++++++++++++--------- src/mds/SimpleLock.h | 1 + 3 files changed, 15 insertions(+), 10 deletions(-) diff --git a/src/mds/CDentry.cc b/src/mds/CDentry.cc index f2fe401c46b..7e22d1e7f22 100644 --- a/src/mds/CDentry.cc +++ b/src/mds/CDentry.cc @@ -220,7 +220,7 @@ void CDentry::make_path(filepath& fp, bool projected) const { assert(dir); dir->inode->make_path(fp, projected); - fp.push_dentry(name); + fp.push_dentry(get_name()); } /* diff --git a/src/mds/CDentry.h b/src/mds/CDentry.h index 689f0ffe6c2..5de3db1b59f 100644 --- a/src/mds/CDentry.h +++ b/src/mds/CDentry.h @@ -104,19 +104,21 @@ public: CDentry(std::string_view n, __u32 h, snapid_t f, snapid_t l) : - name(n), hash(h), + hash(h), first(f), last(l), item_dirty(this), lock(this, &lock_type), - versionlock(this, &versionlock_type) + versionlock(this, &versionlock_type), + name(n) {} CDentry(std::string_view n, __u32 h, inodeno_t ino, unsigned char dt, snapid_t f, snapid_t l) : - name(n), hash(h), + hash(h), first(f), last(l), item_dirty(this), lock(this, &lock_type), - versionlock(this, &versionlock_type) + versionlock(this, &versionlock_type), + name(n) { linkage.remote_ino = ino; linkage.remote_d_type = dt; @@ -341,7 +343,6 @@ public: void dump(Formatter *f) const; - std::string name; __u32 hash; snapid_t first, last; @@ -352,10 +353,10 @@ public: static LockType lock_type; static LockType versionlock_type; - SimpleLock lock; - LocalLock versionlock; + SimpleLock lock; // FIXME referenced containers not in mempool + LocalLock versionlock; // FIXME referenced containers not in mempool - map client_lease_map; + mempool::mds_co::map client_lease_map; protected: @@ -368,10 +369,13 @@ protected: CDir *dir = nullptr; // containing dirfrag linkage_t linkage; - list projected; + mempool::mds_co::list projected; version_t version = 0; // dir version when last touched. version_t projected_version = 0; // what it will be when i unlock/commit. + +private: + mempool::mds_co::string name; }; ostream& operator<<(ostream& out, const CDentry& dn); diff --git a/src/mds/SimpleLock.h b/src/mds/SimpleLock.h index f3cbdf698d5..a8d8cb6b743 100644 --- a/src/mds/SimpleLock.h +++ b/src/mds/SimpleLock.h @@ -177,6 +177,7 @@ protected: private: int num_rdlock; + // XXX not in mempool struct unstable_bits_t { set<__s32> gather_set; // auth+rep. >= 0 is mds, < 0 is client -- 2.39.5