From: John Spray Date: Thu, 7 Aug 2014 17:09:59 +0000 (+0100) Subject: mds/Server: fix wait_for_osd_map calls X-Git-Tag: v0.86~213^2~31 X-Git-Url: http://git-server-git.apps.pok.os.sepia.ceph.com/?a=commitdiff_plain;h=a0fd5e0c12dea07be5a3c2b115f57389ba212cf0;p=ceph.git mds/Server: fix wait_for_osd_map calls These needed a C_OnFinisher and C_IO_Wrapper because they are called back from the Objecter like an I/O completion. Signed-off-by: John Spray --- diff --git a/src/mds/Server.cc b/src/mds/Server.cc index 45c05822975..8de62fb7a15 100644 --- a/src/mds/Server.cc +++ b/src/mds/Server.cc @@ -3704,7 +3704,7 @@ void Server::handle_set_vxattr(MDRequestRef& mdr, CInode *cur, // make sure we have *that*. mdr->waited_for_osdmap = true; mds->objecter->wait_for_latest_osdmap( - new C_MDS_RetryRequest(mdcache, mdr)); + new C_OnFinisher(new C_IO_Wrapper(mds, new C_MDS_RetryRequest(mdcache, mdr)), &mds->finisher)); return; } r = -EINVAL; @@ -3737,7 +3737,7 @@ void Server::handle_set_vxattr(MDRequestRef& mdr, CInode *cur, // make sure we have *that*. mdr->waited_for_osdmap = true; mds->objecter->wait_for_latest_osdmap( - new C_MDS_RetryRequest(mdcache, mdr)); + new C_OnFinisher(new C_IO_Wrapper(mds, new C_MDS_RetryRequest(mdcache, mdr)), &mds->finisher)); return; } r = -EINVAL;