From 69a0d266a8f161ca71a8d59d086a510383ebe658 Mon Sep 17 00:00:00 2001 From: "Yan, Zheng" Date: Wed, 27 Mar 2019 15:05:59 +0800 Subject: [PATCH] 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) --- src/mds/CDentry.h | 3 --- src/mds/CInode.cc | 18 ------------------ src/mds/CInode.h | 5 ----- src/mds/Migrator.cc | 9 --------- src/mds/SimpleLock.h | 13 ------------- 5 files changed, 48 deletions(-) diff --git a/src/mds/CDentry.h b/src/mds/CDentry.h index 16923d83f77..56aa58c561a 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 4f86399e6b7..ea86ff6b960 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 7db2c0e3542..d609ab3037c 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 847e2e0d47e..6ca71da2fc4 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 c5ef94e6e6d..2d719b271b9 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); -- 2.47.3