]> git-server-git.apps.pok.os.sepia.ceph.com Git - ceph.git/commitdiff
mds: remove SimpleLock::replicate_relax() 27500/head
authorYan, Zheng <zyan@redhat.com>
Wed, 27 Mar 2019 07:05:59 +0000 (15:05 +0800)
committerNathan Cutler <ncutler@suse.com>
Wed, 10 Apr 2019 21:54:47 +0000 (23:54 +0200)
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" <zyan@redhat.com>
(cherry picked from commit 509651702cebd4d4e09eb12865627652ba8cd0c7)

src/mds/CDentry.h
src/mds/CInode.cc
src/mds/CInode.h
src/mds/Migrator.cc
src/mds/SimpleLock.h

index 16923d83f77fbcebc22fc789fb0a44de34a98b3f..56aa58c561a9ca2f9ff933e2990f6f1b84608f25 100644 (file)
@@ -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);
index 4f86399e6b7579944e80ebb289c1e583f3eb12e1..ea86ff6b960fba365d646f980e326c2b31c99e96 100644 (file)
@@ -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();
-}
-
-
 
 // =============================================
 
index 7db2c0e35428edd8ff01bc9903e266cf8b6af430..d609ab3037c250d54d508084cfa32ba7f1525e1c 100644 (file)
@@ -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;
index 847e2e0d47e10c253719cda39559fa8a6aad01b1..6ca71da2fc4a505f6d01d1b1154c0666636cffed 100644 (file)
@@ -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++;
     
index c5ef94e6e6dec4d3bae6a6cd6ee8d592d34a41fb..2d719b271b91d7a2d3b51d7d898a3a81fab6592b 100644 (file)
@@ -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);