]> git.apps.os.sepia.ceph.com Git - ceph.git/commitdiff
Server: add snapbl to MDRequest and eliminate last explicit MClientReply
authorGreg Farnum <greg@inktank.com>
Thu, 21 Aug 2014 03:02:45 +0000 (20:02 -0700)
committerGreg Farnum <gfarnum@redhat.com>
Fri, 7 Nov 2014 20:42:14 +0000 (12:42 -0800)
Signed-off-by: Greg Farnum <greg@inktank.com>
src/mds/Mutation.h
src/mds/Server.cc

index a7d8de98621270a8728567227f4dc65b06c52636..166fa3bfa10740aa6d8a388ff938dac6cd272ed0 100644 (file)
@@ -203,6 +203,7 @@ struct MDRequestImpl : public MutationImpl, public TrackedOp {
   int getattr_caps;       ///< caps requested by getattr
 
   bufferlist reply_extra_bl;
+  bufferlist reply_snapbl;
 
   // inos we did a embedded cap release on, and may need to eval if we haven't since reissued
   map<vinodeno_t, ceph_seq_t> cap_releases;  
index 61fb6b74bc2e1972199839e25185679926ae1b99..e59f6c5d158897cb41aa99d5da55ff938b71ffc5 100644 (file)
@@ -960,6 +960,7 @@ void Server::early_reply(MDRequestRef& mdr, CInode *tracei, CDentry *tracedn)
   }
 
   reply->set_extra_bl(mdr->reply_extra_bl);
+  assert(mdr->reply_snapbl.length() == 0); // only used on mksnap
   req->get_connection()->send_message(reply);
 
   mdr->did_early_reply = true;
@@ -1047,6 +1048,7 @@ void Server::reply_request(MDRequestRef& mdr, MClientReply *reply)
     // We can set the extra bl unconditionally: if it's already been sent in the
     // early_reply, set_extra_bl will have claimed it and reply_extra_bl is empty
     reply->set_extra_bl(mdr->reply_extra_bl);
+    reply->snapbl = mdr->reply_snapbl;
 
     reply->set_mdsmap_epoch(mds->mdsmap->get_epoch());
     client_con->send_message(reply);
@@ -7507,10 +7509,9 @@ void Server::_mksnap_finish(MDRequestRef& mdr, CInode *diri, SnapInfo &info)
   // yay
   mdr->in[0] = diri;
   mdr->snapid = info.snapid;
-  MClientReply *reply = new MClientReply(mdr->client_request, 0);
-  reply->snapbl = diri->snaprealm->get_snap_trace();
+  mdr->reply_snapbl = diri->snaprealm->get_snap_trace();
   mdr->tracei = diri;
-  reply_request(mdr, reply);
+  reply_request(mdr, 0);
 }