]> git-server-git.apps.pok.os.sepia.ceph.com Git - ceph.git/commitdiff
osdc/Objecter: take over ownership of OSDMap
authorSage Weil <sage@redhat.com>
Sun, 20 Jul 2014 21:16:49 +0000 (14:16 -0700)
committerJohn Spray <john.spray@redhat.com>
Mon, 25 Aug 2014 00:34:02 +0000 (01:34 +0100)
Instead of taking a pointer to an existing OSDMap in our constructor,
allocate our own, so that we completely own it.

Signed-off-by: Sage Weil <sage@redhat.com>
12 files changed:
src/client/Client.cc
src/client/Client.h
src/librados/RadosClient.cc
src/librados/RadosClient.h
src/mds/MDS.cc
src/mds/MDS.h
src/osd/OSD.cc
src/osd/OSD.h
src/osdc/Objecter.h
src/test/mon/test_mon_workloadgen.cc
src/tools/cephfs/MDSUtility.cc
src/tools/cephfs/MDSUtility.h

index 9afac7878fa16257ac9377e696a9b273c3cdd1ab..69074e5245e86fc2b55790921398e23944c5e889 100644 (file)
@@ -191,9 +191,8 @@ Client::Client(Messenger *m, MonClient *mc)
   messenger = m;
 
   // osd interfaces
-  osdmap = new OSDMap;     // initially blank.. see mount()
   mdsmap = new MDSMap;
-  objecter = new Objecter(cct, messenger, monclient, osdmap,
+  objecter = new Objecter(cct, messenger, monclient,
                          0, 0);
   objecter->set_client_incarnation(0);  // client always 0, for now.
   writeback_handler = new ObjecterWriteback(objecter);
@@ -221,7 +220,6 @@ Client::~Client()
 
   delete filer;
   delete objecter;
-  delete osdmap;
   delete mdsmap;
 
   delete logger;
index 648920b858f328a7c3452528d243d54208fe1700..075ea2a8625a861b529e173ed2106ca543fe3fe5 100644 (file)
@@ -53,7 +53,6 @@ using std::fstream;
 #include "osdc/ObjectCacher.h"
 
 class MDSMap;
-class OSDMap;
 class MonClient;
 
 class CephContext;
@@ -210,7 +209,6 @@ class Client : public Dispatcher {
 
   // cluster descriptors
   MDSMap *mdsmap;
-  OSDMap *osdmap;
 
   SafeTimer timer;
 
index 3e77269d200fad160979e3b2dd2878d15384157d..19691766596b6e798e40af5b2afd6c133efcb5a1 100644 (file)
@@ -221,7 +221,7 @@ int librados::RadosClient::connect()
   ldout(cct, 1) << "starting objecter" << dendl;
 
   err = -ENOMEM;
-  objecter = new Objecter(cct, messenger, &monclient, &osdmap,
+  objecter = new Objecter(cct, messenger, &monclient,
                          cct->_conf->rados_mon_op_timeout,
                          cct->_conf->rados_osd_op_timeout);
   if (!objecter)
index 7c3df8cbb66ef692a1068ad88cd5f45c4646b985..a3895bbf6dde035fd98e5e72087b7fce1fd9eb14 100755 (executable)
@@ -22,7 +22,6 @@
 #include "include/rados/librados.hpp"
 #include "mon/MonClient.h"
 #include "msg/Dispatcher.h"
-#include "osd/OSDMap.h"
 
 #include "IoCtxImpl.h"
 
@@ -47,7 +46,6 @@ private:
     CONNECTED,
   } state;
 
-  OSDMap osdmap;
   MonClient monclient;
   SimpleMessenger *messenger;
 
index d7b07304db7e292a141ec061e81c767dbb6c64ed..ea2062812500b01e4d2d27c8dbb90314eaf8bb39 100644 (file)
@@ -27,7 +27,6 @@
 #include "msg/Messenger.h"
 #include "mon/MonClient.h"
 
-#include "osd/OSDMap.h"
 #include "osdc/Objecter.h"
 #include "osdc/Filer.h"
 #include "osdc/Journaler.h"
@@ -115,10 +114,8 @@ MDS::MDS(const std::string &n, Messenger *m, MonClient *mc) :
   monc->set_messenger(messenger);
 
   mdsmap = new MDSMap;
-  osdmap = new OSDMap;
 
-  objecter = new Objecter(m->cct, messenger, monc, osdmap,
-                         0, 0);
+  objecter = new Objecter(m->cct, messenger, monc, 0, 0);
   objecter->unset_honor_osdmap_full();
 
   filer = new Filer(objecter);
@@ -171,7 +168,6 @@ MDS::~MDS() {
   if (inotable) { delete inotable; inotable = NULL; }
   if (snapserver) { delete snapserver; snapserver = NULL; }
   if (snapclient) { delete snapclient; snapclient = NULL; }
-  if (osdmap) { delete osdmap; osdmap = 0; }
   if (mdsmap) { delete mdsmap; mdsmap = 0; }
 
   if (server) { delete server; server = 0; }
index a5a3aaf797b62808e68d4ddb68d2d9cd5c0c9f4d..2f00b6e0b0e5cca4ab911f2cc31f1f37f71e38e3 100644 (file)
@@ -110,7 +110,6 @@ class filepath;
 
 class MonClient;
 
-class OSDMap;
 class Objecter;
 class Filer;
 
@@ -161,7 +160,6 @@ class MDS : public Dispatcher, public md_config_obs_t {
   Messenger    *messenger;
   MonClient    *monc;
   MDSMap       *mdsmap;
-  OSDMap       *osdmap;
   Objecter     *objecter;
   Filer        *filer;       // for reading/writing to/from osds
   LogClient    clog;
@@ -342,7 +340,6 @@ class MDS : public Dispatcher, public md_config_obs_t {
   int get_nodeid() { return whoami; }
   uint64_t get_metadata_pool() { return mdsmap->get_metadata_pool(); }
   MDSMap *get_mds_map() { return mdsmap; }
-  OSDMap *get_osd_map() { return osdmap; }
 
   void send_message_mds(Message *m, int mds);
   void forward_message_mds(Message *req, int mds);
index 1cadbda10f36149b559be44038ab5dc5dfecab2a..179ec0dac606d8ef1b9072b10aa9880c39c46f6b 100644 (file)
@@ -210,8 +210,7 @@ OSDService::OSDService(OSD *osd) :
   agent_stop_flag(false),
   agent_timer_lock("OSD::agent_timer_lock"),
   agent_timer(osd->client_messenger->cct, agent_timer_lock),
-  objecter(new Objecter(osd->client_messenger->cct, osd->objecter_messenger, osd->monc, &objecter_osdmap,
-                       0, 0)),
+  objecter(new Objecter(osd->client_messenger->cct, osd->objecter_messenger, osd->monc, 0, 0)),
   objecter_finisher(osd->client_messenger->cct),
   watch_lock("OSD::watch_lock"),
   watch_timer(osd->client_messenger->cct, watch_lock),
index f60dd25b6d04013e0c365f8c5766cd169f1b73a1..7d73f07f40e697989994e377df2f810f72ef2ab2 100644 (file)
@@ -649,7 +649,6 @@ public:
 
 
   // -- Objecter, for teiring reads/writes from/to other OSDs --
-  OSDMap objecter_osdmap;
   Objecter *objecter;
   Finisher objecter_finisher;
 
index 05d11acff94ed3a23b7e12649b027aab4011539c..e87b2ebc1a0f5e21c0ba707ea2d82fde14c76813 100644 (file)
@@ -1583,10 +1583,12 @@ public:
 
  public:
   Objecter(CephContext *cct_, Messenger *m, MonClient *mc,
-          OSDMap *om, double mon_timeout,
+          double mon_timeout,
           double osd_timeout) :
     Dispatcher(cct),
-    messenger(m), monc(mc), osdmap(om), cct(cct_),
+    messenger(m), monc(mc),
+    osdmap(new OSDMap),
+    cct(cct_),
     initialized(false),
     last_tid(0), client_inc(-1), max_linger_id(0),
     num_unacked(0), num_uncommitted(0),
@@ -1606,6 +1608,7 @@ public:
     op_throttle_ops(cct, "objecter_ops", cct->_conf->objecter_inflight_ops)
   { }
   ~Objecter() {
+    delete osdmap;
     assert(!tick_event);
     assert(!m_request_state_hook);
     assert(!logger);
index 6a5b00f22f9907a76c19eb4a578e22a8ea85beee..d7537b5a5e608a69db26376eb4b873b55fcd30d8 100644 (file)
@@ -32,7 +32,6 @@
 
 #include "osd/osd_types.h"
 #include "osd/OSD.h"
-#include "osd/OSDMap.h"
 #include "osdc/Objecter.h"
 #include "mon/MonClient.h"
 #include "msg/Dispatcher.h"
@@ -184,7 +183,6 @@ class TestStub : public Dispatcher
 
 class ClientStub : public TestStub
 {
-  OSDMap osdmap;
   ObjecterRef objecter;
   rngen_t gen;
 
@@ -255,7 +253,7 @@ class ClientStub : public TestStub
     dout(10) << "ClientStub::" << __func__ << " starting messenger at "
            << messenger->get_myaddr() << dendl;
 
-    objecter.reset(new Objecter(cct, messenger.get(), &monc, &osdmap, 0, 0));
+    objecter.reset(new Objecter(cct, messenger.get(), &monc, 0, 0));
     assert(objecter.get() != NULL);
     objecter->set_balanced_budget();
 
index 3f59c92932a2181dffb0e6808666d4e25c8edee8..6784052d03a3dd7fbd8f0e1c1422e11ecd7e226f 100644 (file)
@@ -27,8 +27,7 @@ MDSUtility::MDSUtility() :
   monc = new MonClient(g_ceph_context);
   messenger = Messenger::create(g_ceph_context, entity_name_t::CLIENT(), "mds", getpid());
   mdsmap = new MDSMap();
-  osdmap = new OSDMap();
-  objecter = new Objecter(g_ceph_context, messenger, monc, osdmap, 0, 0);
+  objecter = new Objecter(g_ceph_context, messenger, monc, 0, 0);
 }
 
 
@@ -37,7 +36,6 @@ MDSUtility::~MDSUtility()
   delete objecter;
   delete monc;
   delete messenger;
-  delete osdmap;
   delete mdsmap;
   assert(waiting_for_mds_map == NULL);
 }
index d3f938e81713675be29276041c30fafa4c69c57e..1b48d504b252d60dfd3d9f359657a0a418eafa03 100644 (file)
@@ -14,7 +14,6 @@
 #ifndef MDS_UTILITY_H_
 #define MDS_UTILITY_H_
 
-#include "osd/OSDMap.h"
 #include "osdc/Objecter.h"
 #include "mds/MDSMap.h"
 #include "messages/MMDSMap.h"
@@ -31,7 +30,6 @@
 class MDSUtility : public Dispatcher {
 protected:
   Objecter *objecter;
-  OSDMap *osdmap;
   MDSMap *mdsmap;
   Messenger *messenger;
   MonClient *monc;