]> git-server-git.apps.pok.os.sepia.ceph.com Git - ceph.git/commitdiff
client: convert CapSnap::in to smart pointer
authorYan, Zheng <zyan@redhat.com>
Wed, 24 Jun 2015 07:24:41 +0000 (15:24 +0800)
committerYan, Zheng <zyan@redhat.com>
Thu, 12 Nov 2015 07:34:59 +0000 (15:34 +0800)
Signed-off-by: Yan, Zheng <zyan@redhat.com>
src/client/Client.cc
src/client/Inode.h

index 2fc1b4196115cd98f484ae69418dd56f354fd0e5..eb3abb791a3c0ea6eca52ba3685bae12bb937f38 100644 (file)
@@ -2955,7 +2955,6 @@ void Client::queue_cap_snap(Inode *in, snapid_t seq)
   } else if (in->caps_dirty() ||
             (used & CEPH_CAP_FILE_WR) ||
             (dirty & CEPH_CAP_ANY_WR)) {
-    in->get();
     CapSnap *capsnap = new CapSnap(in);
     in->cap_snaps[seq] = capsnap;
     capsnap->context = in->snaprealm->get_snap_context();
@@ -3630,10 +3629,10 @@ void Client::kick_flushing_caps(MetaSession *session)
 
   for (xlist<CapSnap*>::iterator p = session->flushing_capsnaps.begin(); !p.end(); ++p) {
     CapSnap *capsnap = *p;
-    Inode *in = capsnap->in;
+    InodeRef& in = capsnap->in;
     ldout(cct, 20) << " reflushing capsnap " << capsnap
                   << " on " << *in << " to mds." << mds << dendl;
-    flush_snaps(in, false, capsnap);
+    flush_snaps(in.get(), false, capsnap);
   }
   for (xlist<Inode*>::iterator p = session->flushing_caps.begin(); !p.end(); ++p) {
     Inode *in = *p;
@@ -4154,10 +4153,9 @@ void Client::handle_cap_flushsnap_ack(MetaSession *session, Inode *in, MClientCa
     } else {
       ldout(cct, 5) << "handle_cap_flushedsnap mds." << mds << " flushed snap follows " << follows
              << " on " << *in << dendl;
+      in->cap_snaps.erase(follows);
       capsnap->flushing_item.remove_myself();
       delete capsnap;
-      in->cap_snaps.erase(follows);
-      put_inode(in);
     }
   } else {
     ldout(cct, 5) << "handle_cap_flushedsnap DUP(?) mds." << mds << " flushed snap follows " << follows
index 57a56334846f52c7808784dbce30abb5a258fbce..2484159e1d6053c97efb6557ee6722dafb7f2ed8 100644 (file)
@@ -13,6 +13,8 @@
 #include "osdc/ObjectCacher.h"
 #include "include/assert.h"
 
+#include "InodeRef.h"
+
 class Client;
 struct MetaSession;
 class Dentry;
@@ -42,7 +44,7 @@ struct Cap {
 
 struct CapSnap {
   //snapid_t follows;  // map key
-  Inode *in;
+  InodeRef in;
   SnapContext context;
   int issued, dirty;