From: Yan, Zheng Date: Wed, 27 Mar 2019 07:05:59 +0000 (+0800) Subject: mds: remove SimpleLock::replicate_relax() X-Git-Tag: v14.2.1~17^2 X-Git-Url: http://git-server-git.apps.pok.os.sepia.ceph.com/?a=commitdiff_plain;h=refs%2Fpull%2F27500%2Fhead;p=ceph.git mds: remove SimpleLock::replicate_relax() The function changes lock to SYNC state without checking issued caps. which can cause inconsistent between lock state and issued caps. Besides the function is not very useful because locks except nestlock have SYNC state as default. It's unlikely that unused lock is in LOCK state. Signed-off-by: "Yan, Zheng" (cherry picked from commit 509651702cebd4d4e09eb12865627652ba8cd0c7) --- diff --git a/src/mds/CDentry.h b/src/mds/CDentry.h index 16923d83f77f..56aa58c561a9 100644 --- a/src/mds/CDentry.h +++ b/src/mds/CDentry.h @@ -245,9 +245,6 @@ public: // -- replication void encode_replica(mds_rank_t mds, bufferlist& bl, bool need_recover) { - if (!is_replicated()) - lock.replicate_relax(); - __u32 nonce = add_replica(mds); encode(nonce, bl); encode(first, bl); diff --git a/src/mds/CInode.cc b/src/mds/CInode.cc index 4f86399e6b75..ea86ff6b960f 100644 --- a/src/mds/CInode.cc +++ b/src/mds/CInode.cc @@ -3268,24 +3268,6 @@ bool CInode::issued_caps_need_gather(SimpleLock *lock) return false; } -void CInode::replicate_relax_locks() -{ - //dout(10) << " relaxing locks on " << *this << dendl; - ceph_assert(is_auth()); - ceph_assert(!is_replicated()); - - authlock.replicate_relax(); - linklock.replicate_relax(); - dirfragtreelock.replicate_relax(); - filelock.replicate_relax(); - xattrlock.replicate_relax(); - snaplock.replicate_relax(); - nestlock.replicate_relax(); - flocklock.replicate_relax(); - policylock.replicate_relax(); -} - - // ============================================= diff --git a/src/mds/CInode.h b/src/mds/CInode.h index 7db2c0e35428..d609ab3037c2 100644 --- a/src/mds/CInode.h +++ b/src/mds/CInode.h @@ -839,10 +839,6 @@ public: void encode_replica(mds_rank_t rep, bufferlist& bl, uint64_t features, bool need_recover) { ceph_assert(is_auth()); - // relax locks? - if (!is_replicated()) - replicate_relax_locks(); - __u32 nonce = add_replica(rep); using ceph::encode; encode(nonce, bl); @@ -1058,7 +1054,6 @@ public: bool is_any_caps_wanted() const; int get_caps_wanted(int *ploner = 0, int *pother = 0, int shift = 0, int mask = -1) const; bool issued_caps_need_gather(SimpleLock *lock); - void replicate_relax_locks(); // -- authority -- mds_authority_t authority() const override; diff --git a/src/mds/Migrator.cc b/src/mds/Migrator.cc index 847e2e0d47e1..6ca71da2fc4a 100644 --- a/src/mds/Migrator.cc +++ b/src/mds/Migrator.cc @@ -1596,12 +1596,6 @@ void Migrator::encode_export_inode(CInode *in, bufferlist& enc_state, dout(7) << "encode_export_inode " << *in << dendl; ceph_assert(!in->is_replica(mds->get_nodeid())); - // relax locks? - if (!in->is_replicated()) { - in->replicate_relax_locks(); - dout(20) << " did replicate_relax_locks, now " << *in << dendl; - } - encode(in->inode.ino, enc_state); encode(in->last, enc_state); in->encode_export(enc_state); @@ -1739,9 +1733,6 @@ uint64_t Migrator::encode_export_dir(bufferlist& exportbl, for (auto &p : *dir) { CDentry *dn = p.second; CInode *in = dn->get_linkage()->get_inode(); - - if (!dn->is_replicated()) - dn->lock.replicate_relax(); num_exported++; diff --git a/src/mds/SimpleLock.h b/src/mds/SimpleLock.h index c5ef94e6e6de..2d719b271b91 100644 --- a/src/mds/SimpleLock.h +++ b/src/mds/SimpleLock.h @@ -563,10 +563,6 @@ public: state_flags &= ~LEASED; } - bool is_used() const { - return is_xlocked() || is_rdlocked() || is_wrlocked() || is_leased(); - } - bool needs_recover() const { return state_flags & NEED_RECOVER; } @@ -657,15 +653,6 @@ public: state = get_replica_state(); } - /** replicate_relax - * called on first replica creation. - */ - void replicate_relax() { - ceph_assert(parent->is_auth()); - ceph_assert(!parent->is_replicated()); - if (state == LOCK_LOCK && !is_used()) - state = LOCK_SYNC; - } bool remove_replica(int from) { if (is_gathering(from)) { remove_gather(from);