]> git.apps.os.sepia.ceph.com Git - ceph.git/commitdiff
mds/Server: fix wait_for_osd_map calls
authorJohn Spray <john.spray@redhat.com>
Thu, 7 Aug 2014 17:09:59 +0000 (18:09 +0100)
committerJohn Spray <john.spray@redhat.com>
Mon, 25 Aug 2014 00:34:18 +0000 (01:34 +0100)
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 <john.spray@redhat.com>
src/mds/Server.cc

index 45c05822975a2b6c0020037c1045d5a24e48d7ab..8de62fb7a15e376da64f65aa191021996bab130d 100644 (file)
@@ -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;