]> git.apps.os.sepia.ceph.com Git - ceph.git/commitdiff
mds: Keep LogSegment ref for openc backtrace 206/head
authorSam Lang <sam.lang@inktank.com>
Mon, 8 Apr 2013 14:09:41 +0000 (09:09 -0500)
committerSam Lang <sam.lang@inktank.com>
Mon, 8 Apr 2013 17:45:54 +0000 (12:45 -0500)
The MDRequest is destroyed once the client reply is sent, but
we need the reference to the LogSegment for updating the backtrace, so
store a temporary ref to the LogSegment for later.

Fixes #4660.
Signed-off-by: Sam Lang <sam.lang@inktank.com>
src/mds/Server.cc

index 293640e487010a891e73afe2ca2c45197d0a8d4b..dc7ea23f763367d55c0ba989dc5d238d747f46e7 100644 (file)
@@ -2684,11 +2684,12 @@ public:
 
     mds->balancer->hit_inode(mdr->now, newi, META_POP_IWR);
 
+    mdr->ls->queue_backtrace_update(newi, newi->inode.layout.fl_pg_pool);
+
     MClientReply *reply = new MClientReply(mdr->client_request, 0);
     reply->set_extra_bl(mdr->reply_extra_bl);
     mds->server->reply_request(mdr, reply);
 
-    mdr->ls->queue_backtrace_update(newi, newi->inode.layout.fl_pg_pool);
     assert(g_conf->mds_kill_openc_at != 1);
   }
 };