]> git.proxmox.com Git - ceph.git/blobdiff - ceph/src/librados/RadosClient.cc
update sources to v12.1.2
[ceph.git] / ceph / src / librados / RadosClient.cc
index c90f3c129d454805d524d47b02bcef0b9bedfee6..7131aa838acd413a646b298b5e63f61ad29801b6 100644 (file)
@@ -809,22 +809,21 @@ int librados::RadosClient::mon_command(const vector<string>& cmd,
                                       const bufferlist &inbl,
                                       bufferlist *outbl, string *outs)
 {
-  Mutex mylock("RadosClient::mon_command::mylock");
-  Cond cond;
-  bool done;
-  int rval;
+  C_SaferCond ctx;
+  mon_command_async(cmd, inbl, outbl, outs, &ctx);
+  return ctx.wait();
+}
+
+void librados::RadosClient::mon_command_async(const vector<string>& cmd,
+                                              const bufferlist &inbl,
+                                              bufferlist *outbl, string *outs,
+                                              Context *on_finish)
+{
   lock.Lock();
-  monclient.start_mon_command(cmd, inbl, outbl, outs,
-                              new C_SafeCond(&mylock, &cond, &done, &rval));
+  monclient.start_mon_command(cmd, inbl, outbl, outs, on_finish);
   lock.Unlock();
-  mylock.Lock();
-  while (!done)
-    cond.Wait(mylock);
-  mylock.Unlock();
-  return rval;
 }
 
-
 int librados::RadosClient::mgr_command(const vector<string>& cmd,
                                       const bufferlist &inbl,
                                       bufferlist *outbl, string *outs)
@@ -1069,3 +1068,8 @@ int librados::RadosClient::service_daemon_update_status(
   }
   return mgrclient.service_daemon_update_status(status);
 }
+
+mon_feature_t librados::RadosClient::get_required_monitor_features() const
+{
+  return monclient.monmap.get_required_features();
+}