]> git-server-git.apps.pok.os.sepia.ceph.com Git - ceph.git/commitdiff
Revert "client: trim_caps() do not dereference cap if it's removed"
authorJohn Spray <john.spray@redhat.com>
Tue, 29 Nov 2016 17:11:19 +0000 (17:11 +0000)
committerJohn Spray <john.spray@redhat.com>
Tue, 29 Nov 2016 17:15:01 +0000 (17:15 +0000)
We will simplify this another way.

This reverts commit e9fbe39f0f91b7f6551d911f1a2519f5b35175a2.

Signed-off-by: John Spray <john.spray@redhat.com>
src/client/Client.cc
src/client/Client.h

index bc246f7adf6dfb7cf299fe55fa485120d92b0087..790c51549983bacb2efc9bad7358f9e3a92424f1 100644 (file)
@@ -3858,7 +3858,7 @@ void Client::add_update_cap(Inode *in, MetaSession *mds_session, uint64_t cap_id
     signal_cond_list(in->waitfor_caps);
 }
 
-Cap* Client::remove_cap(Cap *cap, bool queue_release)
+void Client::remove_cap(Cap *cap, bool queue_release)
 {
   Inode *in = cap->inode;
   MetaSession *session = cap->session;
@@ -3890,7 +3890,6 @@ Cap* Client::remove_cap(Cap *cap, bool queue_release)
   } else {
     cap->cap_item.remove_myself();
     delete cap;
-    cap = nullptr;
   }
 
   if (!in->is_any_caps()) {
@@ -3899,7 +3898,6 @@ Cap* Client::remove_cap(Cap *cap, bool queue_release)
     put_snap_realm(in->snaprealm);
     in->snaprealm = 0;
   }
-  return cap;
 }
 
 void Client::remove_all_caps(Inode *in)
@@ -3996,7 +3994,7 @@ void Client::trim_caps(MetaSession *s, int max)
       // disposable non-auth cap
       if (!(get_caps_used(in) & ~oissued & mine)) {
        ldout(cct, 20) << " removing unused, unneeded non-auth cap on " << *in << dendl;
-       cap = remove_cap(cap, true);
+       remove_cap(cap, true);
        trimmed++;
       }
     } else {
@@ -4027,7 +4025,7 @@ void Client::trim_caps(MetaSession *s, int max)
     }
 
     ++p;
-    if (cap && !cap->inode) {
+    if (!cap->inode) {
       cap->cap_item.remove_myself();
       delete cap;
     }
index 58c794aa6d5b219d2674999db43b1e87cd6eaa14..6baa1bce6269f9cea899136aca19e18603771d4a 100644 (file)
@@ -621,7 +621,7 @@ protected:
   void add_update_cap(Inode *in, MetaSession *session, uint64_t cap_id,
                      unsigned issued, unsigned seq, unsigned mseq, inodeno_t realm,
                      int flags, const UserPerm& perms);
-  Cap* remove_cap(Cap *cap, bool queue_release);
+  void remove_cap(Cap *cap, bool queue_release);
   void remove_all_caps(Inode *in);
   void remove_session_caps(MetaSession *session);
   void mark_caps_dirty(Inode *in, int caps);