summaryrefslogtreecommitdiffstats
path: root/src
diff options
context:
space:
mode:
authorSam Lang <sam.lang@inktank.com>2013-04-08 16:09:41 +0200
committerSam Lang <sam.lang@inktank.com>2013-04-08 19:45:54 +0200
commit3cdc61eca27d05de93b3693e618cb922294f76a4 (patch)
tree5798ad69909e3af3fce772855311f5b2b714971b /src
parentmon: make 'osd crush move ...' idempotent (diff)
downloadceph-3cdc61eca27d05de93b3693e618cb922294f76a4.tar.xz
ceph-3cdc61eca27d05de93b3693e618cb922294f76a4.zip
mds: Keep LogSegment ref for openc backtrace
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>
Diffstat (limited to 'src')
-rw-r--r--src/mds/Server.cc3
1 files changed, 2 insertions, 1 deletions
diff --git a/src/mds/Server.cc b/src/mds/Server.cc
index 293640e4870..dc7ea23f763 100644
--- a/src/mds/Server.cc
+++ b/src/mds/Server.cc
@@ -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);
}
};