]> git.apps.os.sepia.ceph.com Git - ceph.git/commitdiff
mds: kill mdr->ref_snapdiri
authorSage Weil <sage@newdream.net>
Sun, 12 Apr 2009 21:24:21 +0000 (14:24 -0700)
committerSage Weil <sage@newdream.net>
Mon, 13 Apr 2009 17:24:42 +0000 (10:24 -0700)
The client handles the nosnap->snap namespace transition.

src/mds/MDCache.cc
src/mds/MDCache.h
src/mds/Server.cc
src/mds/Server.h

index abee51e8c4bd9b7e048be7fb3408f715d6a8b8e3..55071b3e47395928001c01a8bd4a57cfa9ef9fb4 100644 (file)
@@ -5561,7 +5561,6 @@ int MDCache::path_traverse(MDRequest *mdr, Message *req,     // who
       if (!mdr)
        return -EINVAL;
       snapid = CEPH_SNAPDIR;
-      mdr->ref_snapdiri = cur;
       mdr->ref_snapid = snapid;
       depth++;
       continue;
@@ -5576,7 +5575,6 @@ int MDCache::path_traverse(MDRequest *mdr, Message *req,     // who
       if (!snapid)
        return -ENOENT;
       mdr->ref_snapid = snapid;
-      mdr->ref_snapdiri = cur;
       depth++;
       continue;
     }
index 07a466850031102acfe83ada99ac3a69e7e91780..051684700eb64c4195570ea3feb6dbbcb9924960 100644 (file)
@@ -254,7 +254,6 @@ struct MDRequest : public Mutation {
 
   vector<CDentry*> trace;  // original path traversal.
   CInode *ref;             // reference inode.  if there is only one, and its path is pinned.
-  CInode *ref_snapdiri;
   snapid_t ref_snapid;
 
   CInode *tracei;
@@ -321,21 +320,21 @@ struct MDRequest : public Mutation {
 
   // ---------------------------------------------------
   MDRequest() : 
-    session(0), client_request(0), ref(0), ref_snapdiri(0), ref_snapid(CEPH_NOSNAP), tracei(0), tracedn(0),
+    session(0), client_request(0), ref(0), ref_snapid(CEPH_NOSNAP), tracei(0), tracedn(0),
     alloc_ino(0), used_prealloc_ino(0), cap(NULL), snap_caps(0), did_early_reply(false),
     slave_request(0),
     internal_op(-1),
     _more(0) {}
   MDRequest(metareqid_t ri, MClientRequest *req) : 
     Mutation(ri),
-    session(0), client_request(req), ref(0), ref_snapdiri(0), ref_snapid(CEPH_NOSNAP), tracei(0), tracedn(0),
+    session(0), client_request(req), ref(0), ref_snapid(CEPH_NOSNAP), tracei(0), tracedn(0),
     alloc_ino(0), used_prealloc_ino(0), cap(NULL), snap_caps(0), did_early_reply(false),
     slave_request(0),
     internal_op(-1),
     _more(0) {}
   MDRequest(metareqid_t ri, int by) : 
     Mutation(ri, by),
-    session(0), client_request(0), ref(0), ref_snapdiri(0), ref_snapid(CEPH_NOSNAP), tracei(0), tracedn(0),
+    session(0), client_request(0), ref(0), ref_snapid(CEPH_NOSNAP), tracei(0), tracedn(0),
     alloc_ino(0), used_prealloc_ino(0), cap(NULL), snap_caps(0), did_early_reply(false),
     slave_request(0),
     internal_op(-1),
index 9b54c2b211ccaac8554e4a9b7edeb54f400d9425..711b87b700484ebfefb9ac834328184d10fd6771 100644 (file)
@@ -583,7 +583,7 @@ void Server::early_reply(MDRequest *mdr, CInode *tracei, CDentry *tracedn)
           << ") " << *req << dendl;
 
   if (tracei || tracedn)
-    set_trace_dist(mdr->session, reply, tracei, tracedn, mdr->ref_snapid, mdr->ref_snapdiri,
+    set_trace_dist(mdr->session, reply, tracei, tracedn, mdr->ref_snapid,
                   mdr->client_request->is_replay(),
                   mdr->client_request->get_dentry_wanted());
 
@@ -633,7 +633,6 @@ void Server::reply_request(MDRequest *mdr, MClientReply *reply, CInode *tracei,
 
   // get tracei/tracedn from mdr?
   snapid_t snapid = mdr->ref_snapid;
-  CInode *snapdiri = mdr->ref_snapdiri;
   if (!tracei)
     tracei = mdr->tracei;
   if (!tracedn)
@@ -661,7 +660,7 @@ void Server::reply_request(MDRequest *mdr, MClientReply *reply, CInode *tracei,
     // send reply, with trace, and possible leases
     if (!did_early_reply &&   // don't issue leases if we sent an earlier reply already
        (tracei || tracedn)) 
-      set_trace_dist(session, reply, tracei, tracedn, snapid, snapdiri, is_replay, dentry_wanted);
+      set_trace_dist(session, reply, tracei, tracedn, snapid, is_replay, dentry_wanted);
     messenger->send_message(reply, client_inst);
   }
   
@@ -707,7 +706,7 @@ void Server::encode_null_lease(bufferlist& bl)
  */
 void Server::set_trace_dist(Session *session, MClientReply *reply,
                            CInode *in, CDentry *dn,
-                           snapid_t snapid, CInode *snapdiri,
+                           snapid_t snapid,
                            bool is_replay, int dentry_wanted)
 {
   // inode, dentry, dir, ..., inode
@@ -751,15 +750,6 @@ void Server::set_trace_dist(Session *session, MClientReply *reply,
     else
       encode_null_lease(bl);
     dout(20) << "set_trace_dist added dn   " << snapid << " " << *dn << dendl;
-    /*} else if (snapdiri && snapdiri->ino() == in->ino() && snapname.length()) {
-    // fake a snapname dentry
-    dout(20) << "set_trace_dist added fake snap dir+dn   " << snapname << " under " << *snapdiri << dendl;
-    reply->head.is_dentry = 1;
-    snapdiri->encode_inodestat(bl, session, NULL, CEPH_SNAPDIR, is_replay);
-    encode_empty_dirstat(bl);
-    ::encode(snapname, bl);
-    encode_infinite_lease(bl);
-    */
   } else
     reply->head.is_dentry = 0;
 
@@ -5215,7 +5205,6 @@ void Server::_mksnap_finish(MDRequest *mdr, CInode *diri, SnapInfo &info)
   // yay
   mdr->ref = diri;
   mdr->ref_snapid = snapid;
-  mdr->ref_snapdiri = diri;
   MClientReply *reply = new MClientReply(mdr->client_request, 0);
   reply->snapbl = diri->snaprealm->get_snap_trace();
   reply_request(mdr, reply, diri);
index b278ce8fabe7206b830a0440cf7db5542a98f128..60755d5d901c28a079ab821ebbd75467ddec73dc 100644 (file)
@@ -89,7 +89,7 @@ public:
   void reply_request(MDRequest *mdr, int r = 0, CInode *tracei = 0, CDentry *tracedn = 0);
   void reply_request(MDRequest *mdr, MClientReply *reply, CInode *tracei = 0, CDentry *tracedn = 0);
   void set_trace_dist(Session *session, MClientReply *reply, CInode *in, CDentry *dn,
-                     snapid_t snapid, CInode *snapdiri,
+                     snapid_t snapid,
                      bool is_replay, int num_dentries_wanted);
 
   void encode_empty_dirstat(bufferlist& bl);