]> git-server-git.apps.pok.os.sepia.ceph.com Git - ceph.git/commitdiff
osd: adapt to new Objecter interface
authorYehuda Sadeh <yehuda@inktank.com>
Sat, 3 May 2014 15:41:05 +0000 (08:41 -0700)
committerJohn Spray <john.spray@redhat.com>
Mon, 25 Aug 2014 00:33:55 +0000 (01:33 +0100)
Signed-off-by: Yehuda Sadeh <yehuda@inktank.com>
src/osd/OSD.cc
src/osd/OSD.h
src/osd/ReplicatedPG.cc

index 2f4cded51c3f002948b086bdb80840d12f0a8023..0892820b108ba66aaded337a4f7d837460070ba7 100644 (file)
@@ -210,10 +210,8 @@ 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_lock("OSD::objecter_lock"),
-  objecter_timer(osd->client_messenger->cct, objecter_lock),
   objecter(new Objecter(osd->client_messenger->cct, osd->objecter_messenger, osd->monc, &objecter_osdmap,
-                       objecter_lock, objecter_timer, 0, 0)),
+                       0, 0)),
   objecter_finisher(osd->client_messenger->cct),
   objecter_dispatcher(this),
   watch_lock("OSD::watch_lock"),
@@ -446,12 +444,7 @@ void OSDService::shutdown()
     watch_timer.shutdown();
   }
 
-  {
-    Mutex::Locker l(objecter_lock);
-    objecter_timer.shutdown();
-    objecter->shutdown_locked();
-  }
-  objecter->shutdown_unlocked();
+  objecter->shutdown();
   objecter_finisher.stop();
 
   {
@@ -465,14 +458,9 @@ void OSDService::shutdown()
 void OSDService::init()
 {
   reserver_finisher.start();
-  {
-    objecter_finisher.start();
-    objecter->init_unlocked();
-    Mutex::Locker l(objecter_lock);
-    objecter_timer.init();
-    objecter->set_client_incarnation(0);
-    objecter->init_locked();
-  }
+  objecter_finisher.start();
+  objecter->set_client_incarnation(0);
+  objecter->init();
   watch_timer.init();
   agent_timer.init();
 
@@ -5365,21 +5353,18 @@ bool OSD::heartbeat_dispatch(Message *m)
 
 bool OSDService::ObjecterDispatcher::ms_dispatch(Message *m)
 {
-  Mutex::Locker l(osd->objecter_lock);
   osd->objecter->dispatch(m);
   return true;
 }
 
 bool OSDService::ObjecterDispatcher::ms_handle_reset(Connection *con)
 {
-  Mutex::Locker l(osd->objecter_lock);
   osd->objecter->ms_handle_reset(con);
   return true;
 }
 
 void OSDService::ObjecterDispatcher::ms_handle_connect(Connection *con)
 {
-  Mutex::Locker l(osd->objecter_lock);
   return osd->objecter->ms_handle_connect(con);
 }
 
@@ -6141,11 +6126,8 @@ void OSD::handle_osd_map(MOSDMap *m)
     session->put();
 
   // share with the objecter
-  {
-    Mutex::Locker l(service.objecter_lock);
-    m->get();
-    service.objecter->handle_osd_map(m);
-  }
+  m->get();
+  service.objecter->handle_osd_map(m);
 
   epoch_t first = m->get_first();
   epoch_t last = m->get_last();
index 0007cc8332d159ca9e72908d383ca742c03f8029..c5e40d0d1fce0c34666845cbedc59380898a507f 100644 (file)
@@ -649,8 +649,6 @@ public:
 
 
   // -- Objecter, for teiring reads/writes from/to other OSDs --
-  Mutex objecter_lock;
-  SafeTimer objecter_timer;
   OSDMap objecter_osdmap;
   Objecter *objecter;
   Finisher objecter_finisher;
index 3e283cc3fdbbd653e409db3d17af2f77d3c853f2..7682c9837acaa7f64021b49aa0bb2c85cbb67bfa 100644 (file)
@@ -5782,12 +5782,10 @@ void ReplicatedPG::_copy_some(ObjectContextRef obc, CopyOpRef cop)
     assert(cop->src.snap == CEPH_NOSNAP);
     ObjectOperation op;
     op.list_snaps(&cop->results.snapset, NULL);
-    osd->objecter_lock.Lock();
     ceph_tid_t tid = osd->objecter->read(cop->src.oid, cop->oloc, op,
                                    CEPH_SNAPDIR, NULL,
                                    flags, gather.new_sub(), NULL);
     cop->objecter_tid2 = tid;
-    osd->objecter_lock.Unlock();
   }
 
   ObjectOperation op;
@@ -5810,7 +5808,6 @@ void ReplicatedPG::_copy_some(ObjectContextRef obc, CopyOpRef cop)
   gather.set_finisher(new C_OnFinisher(fin,
                                       &osd->objecter_finisher));
 
-  osd->objecter_lock.Lock();
   ceph_tid_t tid = osd->objecter->read(cop->src.oid, cop->oloc, op,
                                  cop->src.snap, NULL,
                                  flags,
@@ -5820,7 +5817,6 @@ void ReplicatedPG::_copy_some(ObjectContextRef obc, CopyOpRef cop)
   fin->tid = tid;
   cop->objecter_tid = tid;
   gather.activate();
-  osd->objecter_lock.Unlock();
 }
 
 void ReplicatedPG::process_copy_chunk(hobject_t oid, ceph_tid_t tid, int r)
@@ -6236,7 +6232,6 @@ void ReplicatedPG::cancel_copy(CopyOpRef cop, bool requeue)
 
   // cancel objecter op, if we can
   if (cop->objecter_tid) {
-    Mutex::Locker l(osd->objecter_lock);
     osd->objecter->op_cancel(cop->objecter_tid, -ECANCELED);
     cop->objecter_tid = 0;
     if (cop->objecter_tid2) {
@@ -6454,7 +6449,6 @@ int ReplicatedPG::start_flush(
   if (dsnapc.seq > 0) {
     ObjectOperation o;
     o.remove();
-    osd->objecter_lock.Lock();
     osd->objecter->mutate(
       soid.oid,
       base_oloc,
@@ -6466,7 +6460,6 @@ int ReplicatedPG::start_flush(
        CEPH_OSD_FLAG_ENFORCE_SNAPC),
       NULL,
       NULL /* no callback, we'll rely on the ordering w.r.t the next op */);
-    osd->objecter_lock.Unlock();
   }
 
   FlushOpRef fop(new FlushOp);
@@ -6490,16 +6483,15 @@ int ReplicatedPG::start_flush(
   }
   C_Flush *fin = new C_Flush(this, soid, get_last_peering_reset());
 
-  osd->objecter_lock.Lock();
   ceph_tid_t tid = osd->objecter->mutate(
     soid.oid, base_oloc, o, snapc, oi.mtime,
     CEPH_OSD_FLAG_IGNORE_OVERLAY | CEPH_OSD_FLAG_ENFORCE_SNAPC,
     NULL,
     new C_OnFinisher(fin,
                     &osd->objecter_finisher));
+  /* we're under the pg lock and fin->finish() is grabbing that */
   fin->tid = tid;
   fop->objecter_tid = tid;
-  osd->objecter_lock.Unlock();
 
   flush_ops[soid] = fop;
   return -EINPROGRESS;
@@ -6642,7 +6634,6 @@ void ReplicatedPG::cancel_flush(FlushOpRef fop, bool requeue)
   dout(10) << __func__ << " " << fop->obc->obs.oi.soid << " tid "
           << fop->objecter_tid << dendl;
   if (fop->objecter_tid) {
-    Mutex::Locker l(osd->objecter_lock);
     osd->objecter->op_cancel(fop->objecter_tid, -ECANCELED);
     fop->objecter_tid = 0;
   }