]> git.apps.os.sepia.ceph.com Git - ceph.git/commitdiff
client: Always cleanup request after safe
authorSam Lang <sam.lang@inktank.com>
Mon, 25 Mar 2013 16:43:54 +0000 (11:43 -0500)
committerSam Lang <sam.lang@inktank.com>
Tue, 26 Mar 2013 14:25:18 +0000 (09:25 -0500)
The client MetaRequest should always be cleaned up
and removed from the mds_requests map once the client
gets a safe reply.  This patch avoids a leak where the
mds does not send back an unsafe reply and the request
is never cleaned up.

Signed-off-by: Sam Lang <sam.lang@inktank.com>
src/client/Client.cc

index f9e75f63c9b44193b56f1c9707ffe727634e3d87..6c90844c1846e6612aa7005d68656c8eec4f3ed5 100644 (file)
@@ -1751,13 +1751,13 @@ void Client::handle_client_reply(MClientReply *reply)
 
   if (is_safe) {
     // the filesystem change is committed to disk
+    // we're done, clean up
     if (request->got_unsafe) {
-      // we're done, clean up
-      request->item.remove_myself();
       request->unsafe_item.remove_myself();
-      mds_requests.erase(tid);
-      request->put(); // for the dumb data structure
     }
+    request->item.remove_myself();
+    mds_requests.erase(tid);
+    request->put(); // for the dumb data structure
   }
   if (unmounting)
     mount_cond.Signal();